ConvertFrom-String
Mengekstrak dan mengurai properti terstruktur dari konten string.
Sintaks
ByDelimiter (Default)
ConvertFrom-String
[-InputObject] <String>
[-Delimiter <String>]
[-PropertyNames <String[]>]
[<CommonParameters>]
TemplateParsing
ConvertFrom-String
[-InputObject] <String>
[-TemplateFile <String[]>]
[-TemplateContent <String[]>]
[-IncludeExtent]
[-UpdateTemplate]
[<CommonParameters>]
Deskripsi
cmdlet ConvertFrom-String mengekstrak dan mengurai properti terstruktur dari konten string. Cmdlet ini menghasilkan objek dengan mengurai teks dari aliran teks tradisional. Untuk setiap string dalam alur, cmdlet membagi input dengan pemisah atau ekspresi penguraian, lalu menetapkan nama properti ke masing-masing elemen pemisah yang dihasilkan. Anda dapat memberikan nama properti ini; jika tidak, mereka secara otomatis dibuat untuk Anda.
Set parameter default cmdlet, ByDelimiter, memisahkan persis pada pemisah ekspresi reguler. Ini tidak melakukan pencocokan kutipan atau pemisah melarikan diri seperti yang dilakukan cmdlet Import-Csv.
Kumpulan parameter alternatif cmdlet, TemplateParsing, menghasilkan elemen dari grup yang ditangkap oleh ekspresi reguler. Untuk informasi selengkapnya tentang ekspresi reguler, lihat about_Regular_Expressions.
Cmdlet ini mendukung dua mode: penguraian berbatas dasar, dan penguraian berbasis contoh yang dibuat secara otomatis.
Penguraian yang dibatasi, secara default, membagi input pada spasi kosong, dan menetapkan nama properti ke grup yang dihasilkan.
Anda dapat menyesuaikan pemisah dengan membajak hasil ConvertFrom-String menjadi salah satu cmdlet Format-*, atau Anda dapat menggunakan parameter Pemisah.
Cmdlet ini juga mendukung penguraian berbasis contoh yang dihasilkan secara otomatis berdasarkan FlashExtract, pekerjaan penelitian oleh Microsoft Research.
Contoh
Contoh 1: Membuat objek dengan nama properti default
"Hello World" | ConvertFrom-String
P1 P2
-- --
Hello World
Perintah ini menghasilkan objek dengan nama properti default, P1 dan P2.
Contoh 1A: Mengenal objek yang dihasilkan
Perintah ini menghasilkan satu objek dengan properti P1, P2; kedua properti tersebut berjenis String, secara default.
"Hello World" | ConvertFrom-String | Get-Member
TypeName: System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
P1 NoteProperty string P1=Hello
P2 NoteProperty string P2=World
Contoh 2: Membuat objek dengan nama properti default menggunakan pemisah
Perintah ini menghasilkan objek dengan domain dan nama pengguna menggunakan garis miring terbalik (\) sebagai pemisah. Karakter garis miring terbalik harus diloloskan dengan garis miring terbalik lain saat menggunakan ekspresi reguler.
"Contoso\Administrator" | ConvertFrom-String -Delimiter "\\"
P1 P2
-- --
Contoso Administrator
Contoh 3: Hasilkan objek yang berisi dua properti bernama
Contoh berikut membuat objek dari entri file host Windows.
$content = Get-Content C:\Windows\System32\drivers\etc\hosts
$content = $content -match "^[^#]"
$content | ConvertFrom-String -PropertyNames IP, Server
IP Server
-- ------
192.168.7.10 W2012R2
192.168.7.20 W2016
192.168.7.101 WIN8
192.168.7.102 WIN10
Cmdlet Get-Content menyimpan konten file host Windows di $content. Perintah kedua menghapus komentar apa pun di awal file host menggunakan ekspresi reguler yang cocok dengan baris apa pun yang tidak dimulai dengan (#). Perintah terakhir mengonversi teks yang tersisa menjadi objek dengan Server dan properti IP.
Contoh 4: Gunakan ekspresi sebagai nilai parameter TemplateContent, simpan hasilnya dalam variabel.
Perintah ini menggunakan ekspresi sebagai nilai parameter TemplateContent. Ekspresi disimpan dalam variabel untuk kesederhanaan. Windows PowerShell memahami sekarang bahwa string yang digunakan pada alur untuk ConvertFrom-String memiliki tiga properti:
- Nama
- telepon
- usia
$template = @'
{Name*:Phoebe Cat}, {phone:425-123-6789}, {age:6}
{Name*:Lucky Shot}, {phone:(206) 987-4321}, {age:12}
'@
$testText = @'
Phoebe Cat, 425-123-6789, 6
Lucky Shot, (206) 987-4321, 12
Elephant Wise, 425-888-7766, 87
Wild Shrimp, (111) 222-3333, 1
'@
$PersonalData = $testText | ConvertFrom-String -TemplateContent $template
Write-Output ("Pet items found: " + ($PersonalData.Count))
$PersonalData
Pet items found: 4
Name phone age
---- ----- ---
Phoebe Cat 425-123-6789 6
Lucky Shot (206) 987-4321 12
Elephant Wise 425-888-7766 87
Wild Shrimp (111) 222-3333 1
Setiap baris dalam input dievaluasi oleh sampel yang cocok. Jika baris cocok dengan contoh yang diberikan dalam pola, nilai diekstrak dan diteruskan ke variabel output.
Data sampel, $template, menyediakan dua format telepon yang berbeda:
425-123-6789(206) 987-4321
Data sampel juga menyediakan dua format usia yang berbeda:
612
Ini menyiratkan bahwa ponsel seperti (206) 987 4321 tidak akan dikenali, karena tidak ada data sampel yang cocok dengan pola tersebut karena tidak ada tanda hubung.
Contoh 5: Menentukan jenis data ke properti yang dihasilkan
Ini adalah contoh yang sama dengan Contoh 4, di atas. Perbedaannya adalah bahwa string pola menyertakan jenis data untuk setiap properti yang diinginkan.
$template = @'
{[string]Name*:Phoebe Cat}, {[string]phone:425-123-6789}, {[int]age:6}
{[string]Name*:Lucky Shot}, {[string]phone:(206) 987-4321}, {[int]age:12}
'@
$testText = @'
Phoebe Cat, 425-123-6789, 6
Lucky Shot, (206) 987-4321, 12
Elephant Wise, 425-888-7766, 87
Wild Shrimp, (111) 222-3333, 1
'@
$PersonalData = $testText | ConvertFrom-String -TemplateContent $template
Write-Output ("Pet items found: " + ($PersonalData.Count))
$PersonalData
Pet items found: 4
Name phone age
---- ----- ---
Phoebe Cat 425-123-6789 6
Lucky Shot (206) 987-4321 12
Elephant Wise 425-888-7766 87
Wild Shrimp (111) 222-3333 1
$PersonalData | Get-Member
TypeName: System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
age NoteProperty int age=6
Name NoteProperty string Name=Phoebe Cat
phone NoteProperty string phone=425-123-6789
Cmdlet Get-Member digunakan untuk menunjukkan bahwa properti usia adalah bilangan bulat.
Parameter
-Delimiter
Menentukan ekspresi reguler yang mengidentifikasi batas antar elemen. Elemen yang dibuat oleh pemisahan menjadi properti dalam objek yang dihasilkan. Pemisah pada akhirnya digunakan dalam panggilan ke metode Pisahkan dari jenis [System.Text.RegularExpressions.RegularExpression].
Properti parameter
| Jenis: | String |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
| Alias: | DEL |
Kumpulan parameter
ByDelimiter
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-IncludeExtent
Menunjukkan bahwa cmdlet ini menyertakan properti teks tingkat yang dihapus secara default.
Properti parameter
| Jenis: | SwitchParameter |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
| Alias: | IE (Internet Explorer) |
Kumpulan parameter
TemplateParsing
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-InputObject
Menentukan string yang diterima dari alur, atau variabel yang berisi objek string.
Properti parameter
| Jenis: | String |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Kumpulan parameter
(All)
| Position: | 0 |
| Wajib: | True |
| Nilai dari alur: | True |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-PropertyNames
Menentukan array nama properti untuk menetapkan nilai terpisah dalam objek yang dihasilkan. Setiap baris teks yang Anda pisahkan atau urai menghasilkan elemen yang mewakili nilai properti. Jika elemen adalah hasil dari grup pengambilan, dan grup penangkapan tersebut diberi nama (misalnya, (?<name>) atau (?'name') ), maka nama grup tangkapan tersebut ditetapkan ke properti .
Jika Anda menyediakan elemen apa pun dalam array
Jika Anda menyediakan lebih banyak nama properti daripada bidang, PowerShell mengabaikan nama properti tambahan. Jika Anda tidak menentukan nama properti yang cukup untuk memberi nama semua bidang, PowerShell secara otomatis menetapkan nama properti numerik ke properti apa pun yang tidak bernama: P1, P2, dll.
Properti parameter
| Jenis: | String[] |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
| Alias: | PN |
Kumpulan parameter
ByDelimiter
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-TemplateContent
Menentukan ekspresi, atau ekspresi yang disimpan sebagai variabel, yang menjelaskan properti tempat cmdlet ini menetapkan string. Sintaksis spesifikasi bidang templat adalah sebagai berikut: {[optional-typecast]<name>:<example-value>}.
Properti parameter
| Jenis: | String[] |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
| Alias: | TC |
Kumpulan parameter
TemplateParsing
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-TemplateFile
Menentukan file, sebagai array, yang berisi templat untuk penguraian string yang diinginkan. Dalam file templat, properti dan nilainya diapit dalam tanda kurung siku, seperti yang ditunjukkan di bawah ini. Jika properti, seperti properti Nama dan properti lain terkait, muncul beberapa kali, Anda dapat menambahkan tanda bintang (*) untuk menunjukkan bahwa ini menghasilkan beberapa rekaman. Ini menghindari mengekstrak beberapa properti ke dalam satu rekaman.
{Name*:David Chew}
{City:Redmond}, {State:WA}
{Name*:Evan Narvaez} {Name*:Antonio Moreno}
{City:Issaquah}, {State:WA}
Properti parameter
| Jenis: | String[] |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
| Alias: | TF |
Kumpulan parameter
TemplateParsing
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-UpdateTemplate
Menunjukkan bahwa cmdlet ini menyimpan hasil algoritma pembelajaran ke dalam komentar dalam file templat. Hal ini membuat proses pembelajaran algoritma lebih cepat. Untuk menggunakan parameter ini, Anda juga harus menentukan file templat dengan parameter
Properti parameter
| Jenis: | SwitchParameter |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
| Alias: | UT |
Kumpulan parameter
TemplateParsing
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
CommonParameters
Cmdlet ini mendukung parameter umum: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction, dan -WarningVariable. Untuk informasi selengkapnya, lihat about_CommonParameters.
Input
String
Output
PSCustomObject
Catatan
Windows PowerShell menyertakan alias berikut untuk ConvertFrom-String:
CFS