Bagikan melalui


ConvertFrom-String

Mengekstrak dan mengurai properti terstruktur dari konten string.

Sintaks

ConvertFrom-String
                [-Delimiter <String>]
                [-PropertyNames <String[]>]
                [-InputObject] <String>
                [<CommonParameters>]
ConvertFrom-String
                [-TemplateFile <String[]>]
                [-TemplateContent <String[]>]
                [-IncludeExtent]
                [-UpdateTemplate]
                [-InputObject] <String>
                [<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:

  • 6
  • 12

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].

Jenis:String
Alias:DEL
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard:False

-IncludeExtent

Menunjukkan bahwa cmdlet ini menyertakan properti teks tingkat yang dihapus secara default.

Jenis:SwitchParameter
Alias:IE
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard:False

-InputObject

Menentukan string yang diterima dari alur, atau variabel yang berisi objek string.

Jenis:String
Position:0
Nilai default:None
Diperlukan:True
Terima input alur:True
Terima karakter wildcard: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 PropertyName, nama tersebut ditetapkan ke properti yang belum diberi nama.

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.

Jenis:String[]
Alias:PN
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard: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>}.

Jenis:String[]
Alias:TC
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard: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*:D avid Chew} {City:Redmond}, {State:WA} {Name*:Evan Narvaez} {Name*:Antonio Moreno} {City:Issaquah}, {State:WA}

Jenis:String[]
Alias:TF
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard: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 TemplateFile.

Jenis:SwitchParameter
Alias:UT
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard:False

Input

String

Output

PSCustomObject

Catatan

Windows PowerShell menyertakan alias berikut untuk ConvertFrom-String:

  • CFS