ConvertFrom-String
Dize içeriğinden yapılandırılmış özellikleri ayıklar ve ayrıştırılır.
Syntax
ByDelimiter (Varsayılan)
ConvertFrom-String
[-InputObject] <String>
[-Delimiter <String>]
[-PropertyNames <String[]>]
[<CommonParameters>]
TemplateParsing
ConvertFrom-String
[-InputObject] <String>
[-TemplateFile <String[]>]
[-TemplateContent <String[]>]
[-IncludeExtent]
[-UpdateTemplate]
[<CommonParameters>]
Description
ConvertFrom-String cmdlet'i, yapılandırılmış özellikleri dize içeriğinden ayıklar ve ayrıştırılır. Bu cmdlet, geleneksel bir metin akışından metin ayrıştırarak bir nesne oluşturur. İşlem hattındaki her dize için, cmdlet girişi bir sınırlayıcı veya ayrıştırma ifadesiyle böler ve ardından sonuçta elde edilen bölme öğelerinin her birine özellik adları atar. Bu özellik adlarını sağlayabilirsiniz; aksi takdirde bunlar sizin için otomatik olarak oluşturulur.
Cmdlet'in varsayılan parametre kümesi olan ByDelimiterImport-Csv cmdlet'in yaptığı gibi tırnak eşleştirme veya sınırlayıcı kaçışı gerçekleştirmez.
Cmdlet'in templateParsing
Bu cmdlet iki modu destekler: temel sınırlandırılmış ayrıştırma ve otomatik olarak oluşturulan örnek temelli ayrıştırma.
Sınırlandırılmış ayrıştırma, varsayılan olarak girişi boşlukta böler ve sonuçta elde edilen gruplara özellik adları atar.
ConvertFrom-String sonuçlarını Format-* cmdlet'lerinden birine ekleyerek sınırlayıcıyı özelleştirebilir veya Sınırlayıcı parametresini kullanabilirsiniz.
Cmdlet, Microsoft Researchtarafından yapılan araştırma çalışmalarını
Örnekler
Örnek 1: Varsayılan özellik adlarıyla bir nesne oluşturma
"Hello World" | ConvertFrom-String
P1 P2
-- --
Hello World
Bu komut, P1 ve P2 varsayılan özellik adlarına sahip bir nesne oluşturur.
Örnek 1A: Oluşturulan nesneyi tanımaya başlama
Bu komut, P1 P2özelliklerine sahip bir nesne oluşturur; her iki özellik de varsayılan olarak Dize türündedir.
"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
Örnek 2: Sınırlayıcı kullanarak varsayılan özellik adlarına sahip bir nesne oluşturma
Bu komut, sınırlayıcı olarak ters eğik çizgi (\) kullanarak etki alanı ve kullanıcı adı içeren bir nesne oluşturur. Normal ifadeler kullanılırken ters eğik çizgi karakterinin başka bir ters eğik çizgiyle kaçış karakteri olması gerekir.
"Contoso\Administrator" | ConvertFrom-String -Delimiter "\\"
P1 P2
-- --
Contoso Administrator
Örnek 3: İki adlandırılmış özellik içeren bir nesne oluşturma
Aşağıdaki örnek, Windows konakları dosya girdilerinden nesneler oluşturur.
$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
Get-Content cmdlet'i, windows konakları dosyasının içeriğini $contentiçinde depolar. İkinci komut, hosts dosyasının başındaki açıklamaları, ile başlamayan herhangi bir satırla eşleşen normal bir ifade kullanarak kaldırır (#). Son komut, kalan metni Server ve IP özelliklerine sahip nesnelere dönüştürür.
Örnek 4: TemplateContent parametresinin değeri olarak bir ifade kullanın, sonuçları bir değişkene kaydedin.
Bu komut, TemplateContent parametresinin değeri olarak bir ifade kullanır. İfade basitlik için bir değişkene kaydedilir. Windows PowerShell artık işlem hattında ConvertFrom-String için kullanılan dizenin üç özelliğe sahip olduğunu anlar:
- İsim
- telefon
- yaş
$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
Girişteki her satır örnek eşleşmeler tarafından değerlendirilir. Çizgi, desende verilen örneklerle eşleşiyorsa, değerler ayıklanır ve çıkış değişkenine geçirilir.
$templateörnek veriler iki farklı telefon biçimi sağlar:
425-123-6789(206) 987-4321
Örnek veriler iki farklı yaş biçimi de sağlar:
612
Bu, (206) 987 4321 gibi telefonların tanınmayacağını gösterir çünkü kısa çizgi olmadığından bu desenle eşleşen örnek veri yoktur.
Örnek 5: Oluşturulan özelliklere veri türlerini belirtme
Bu, yukarıdaki Örnek 4 ile aynı örnektir. Fark, desen dizesinin istenen her özellik için bir veri türü içermesidir.
$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
Get-Member cmdlet'i, yaş özelliğinin bir tamsayı olduğunu göstermek için kullanılır.
Parametreler
-Delimiter
Öğeler arasındaki sınırı tanımlayan normal bir ifade belirtir. Bölme tarafından oluşturulan öğeler, sonuçta elde edilen nesnede özelliklere dönüşür. Sınırlayıcı, sonunda türündeki [System.Text.RegularExpressions.RegularExpression] yöntemine yapılan çağrıda kullanılır.
Parametre özellikleri
| Tür: | String |
| Default value: | None |
| Joker karakterleri destekler: | False |
| DontShow: | False |
| Diğer adlar: | DEL |
Parametre kümeleri
ByDelimiter
| Position: | Named |
| Zorunlu: | False |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | False |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
-IncludeExtent
Bu cmdlet'in varsayılan olarak kaldırılan bir extent metin özelliği içerdiğini gösterir.
Parametre özellikleri
| Tür: | SwitchParameter |
| Default value: | None |
| Joker karakterleri destekler: | False |
| DontShow: | False |
| Diğer adlar: | Internet Explorer |
Parametre kümeleri
TemplateParsing
| Position: | Named |
| Zorunlu: | False |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | False |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
-InputObject
İşlem hattından alınan dizeleri veya dize nesnesi içeren bir değişkeni belirtir.
Parametre özellikleri
| Tür: | String |
| Default value: | None |
| Joker karakterleri destekler: | False |
| DontShow: | False |
Parametre kümeleri
(All)
| Position: | 0 |
| Zorunlu: | True |
| İşlem hattından gelen değer: | True |
| Özellik adına göre işlem hattından gelen değer: | False |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
-PropertyNames
Sonuçta elde edilen nesnede bölünmüş değerlerin atandığı özellik adları dizisini belirtir. Böldüğünüz veya ayrıştırdığınız her metin satırı, özellik değerlerini temsil eden öğeler oluşturur. öğesi bir yakalama grubunun sonucuysa ve bu yakalama grubu (örneğin, (?<name>) veya (?'name')) olarak adlandırılırsa, bu yakalama grubunun adı özelliğine atanır.
PropertyName dizisinde herhangi bir öğe sağlarsanız, bu adlar henüz adlandırılmamış özelliklere atanır.
Alanlardan daha fazla özellik adı sağlarsanız, PowerShell ek özellik adlarını yoksayar. Tüm alanları adlandırmak için yeterli özellik adı belirtmezseniz PowerShell, P1, P2vb. adlı özelliklere otomatik olarak sayısal özellik adları atar.
Parametre özellikleri
| Tür: | String[] |
| Default value: | None |
| Joker karakterleri destekler: | False |
| DontShow: | False |
| Diğer adlar: | PN |
Parametre kümeleri
ByDelimiter
| Position: | Named |
| Zorunlu: | False |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | False |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
-TemplateContent
Bu cmdlet'in dize atadığı özellikleri açıklayan bir ifadeyi veya değişken olarak kaydedilen bir ifadeyi belirtir. Şablon alanı belirtiminin söz dizimi aşağıdaki gibidir: {[optional-typecast]<name>:<example-value>}.
Parametre özellikleri
| Tür: | String[] |
| Default value: | None |
| Joker karakterleri destekler: | False |
| DontShow: | False |
| Diğer adlar: | TC |
Parametre kümeleri
TemplateParsing
| Position: | Named |
| Zorunlu: | False |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | False |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
-TemplateFile
Dizenin istenen ayrıştırılması için şablon içeren bir dosyayı dizi olarak belirtir. Şablon dosyasında, aşağıda gösterildiği gibi özellikler ve değerleri köşeli ayraç içine alınır.
Name özelliği ve ilişkili diğer özellikleri gibi bir özellik birden çok kez görünürse, bunun birden çok kayıtla sonuçlandığını belirtmek için yıldız işareti (*) ekleyebilirsiniz. Bu, birden çok özelliğin tek bir kayıtta ayıklanmasından kaçınılır.
{Name*:David Chew}
{City:Redmond}, {State:WA}
{Name*:Evan Narvaez} {Name*:Antonio Moreno}
{City:Issaquah}, {State:WA}
Parametre özellikleri
| Tür: | String[] |
| Default value: | None |
| Joker karakterleri destekler: | False |
| DontShow: | False |
| Diğer adlar: | TF (İngilizce) |
Parametre kümeleri
TemplateParsing
| Position: | Named |
| Zorunlu: | False |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | False |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
-UpdateTemplate
Bu cmdlet'in bir öğrenme algoritmasının sonuçlarını şablon dosyasındaki bir açıklamaya kaydettiğini gösterir. Bu, algoritma öğrenme sürecini hızlandırır. Bu parametreyi kullanmak için TemplateFile parametresine sahip bir şablon dosyası da belirtmeniz gerekir.
Parametre özellikleri
| Tür: | SwitchParameter |
| Default value: | None |
| Joker karakterleri destekler: | False |
| DontShow: | False |
| Diğer adlar: | UT |
Parametre kümeleri
TemplateParsing
| Position: | Named |
| Zorunlu: | False |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | False |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
CommonParameters
Bu cmdlet yaygın parametreleri destekler: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction ve -WarningVariable. Daha fazla bilgi için bkz. about_CommonParameters.
Girişler
String
Çıkışlar
PSCustomObject
Notlar
Windows PowerShell, ConvertFrom-Stringiçin aşağıdaki diğer adları içerir:
CFS