Aracılığıyla paylaş


ConvertFrom-StringData

Bir veya daha fazla anahtar ve değer çifti içeren bir dizeyi karma tabloya dönüştürür.

Sözdizimi

Default EnterprisePublishing

ConvertFrom-StringData
    [-StringData] <String>
    [[-Delimiter] <Char>]
    [<CommonParameters>]

Description

ConvertFrom-StringData cmdlet'i, bir veya birden fazla anahtar-değer çifti içeren bir dizeyi bir karma tabloya dönüştürür. Her anahtar-değer çiftinin ayrı bir satırda olması gerektiğinden, giriş biçimi olarak genellikle here-strings kullanılır. Varsayılan olarak, anahtarı, değeri'ten eşittir işareti (=) karakteriyle ayrılmalıdır.

ConvertFrom-StringData cmdlet'i, bir betiğin veya işlevin data bölümünde kullanılabilecek güvenli bir cmdlet olarak kabul edilir. bir data bölümünde kullanıldığında, dizenin içeriği data bölümün kurallarına uygun olmalıdır. Daha fazla bilgi için bkz. about_Data_Sections.

ConvertFrom-StringData, geleneksel makine çevirisi araçlarının izin verdiği kaçış karakteri dizilerini destekler. Diğer bir ifadeyle cmdlet, normalde bir betikteki satırın sonuna işaret eden PowerShell backtick karakteri (\) yerine Regex.Unescape Metodukullanarak dize verilerinde ters eğik çizgileri (`) kaçış karakterleri olarak yorumlayabilir. Buradaki dizenin içinde, ters köşe karakteri çalışmaz. Ayrıca sonuçlarınızda sabit bir ters eğik çizgiyi korumak için önceki bir ters eğik çizgiyle bundan kaçabilirsiniz: \\. Dosya yollarında yaygın olarak kullanılanlar gibi sıralanmamış ters eğik çizgi karakterleri sonuçlarınızda geçersiz kaçış dizileri olarak işlenebilir.

PowerShell 7, Sınırlayıcı parametresini ekler.

Örnekler

Örnek 1: Tek tırnaklı bir here-string'i karma tabloya dönüştürme

Bu örnek, kullanıcı iletilerinin tek tırnaklı bir here-string ifadesini hash tablosuna dönüştürür. Tek tırnaklı bir dizede, değerler değişkenler yerine geçmez ve ifadeler değerlendirilmez. ConvertFrom-StringData cmdlet'i, $Here değişkenindeki değeri bir hash tabloya dönüştürür.

$Here = @'
Msg1 = The string parameter is required.
Msg2 = Credentials are required for this command.
Msg3 = The specified variable doesn't exist.
'@
ConvertFrom-StringData -StringData $Here
Name                           Value
----                           -----
Msg3                           The specified variable doesn't exist.
Msg2                           Credentials are required for this command.
Msg1                           The string parameter is required.

Örnek 2: Farklı bir sınırlayıcı kullanarak dize verilerini dönüştürme

Bu örnekte, sınırlayıcı olarak farklı bir karakter kullanan dize verilerinin nasıl dönüştürüldüğü gösterilmektedir. Bu örnekte, dize verileri sınırlayıcı olarak kanal karakterini (|) kullanıyor.

$StringData = @'
color|red
model|coupe
year|1965
condition|mint
'@
$carData = ConvertFrom-StringData -StringData $StringData -Delimiter '|'
$carData
Name                           Value
----                           -----
condition                      mint
model                          coupe
color                          red
year                           1965

Örnek 3: Açıklama içeren bir here-string'i dönüştürme

Bu örnek, açıklama ve birden çok anahtar-değer çifti içeren bir here-string'i karma tabloya dönüştürür.

ConvertFrom-StringData -StringData @'
Name = Disks.ps1

# Category is optional.

Category = Storage
Cost = Free
'@
Name                           Value
----                           -----
Cost                           Free
Category                       Storage
Name                           Disks.ps1

StringData parametresinin değeri, here-string içeren bir değişken yerine bir here-string değeridir. Her iki biçim de geçerlidir. Buradaki dize, dizelerden biri hakkında bir açıklama içerir. ConvertFrom-StringData tek satırlı açıklamaları yoksayar, ancak karma karakteri (#) satırdaki ilk boşluk olmayan karakter olmalıdır.

Örnek 4: Dizeyi karma tabloya dönüştürme

Bu örnek, normal çift tırnaklı dizeyi (here-string değil) karma tabloya dönüştürür ve $A değişkenine kaydeder.

$A = ConvertFrom-StringData -StringData "Top = Red `n Bottom = Blue"
$A
Name             Value
----             -----
Bottom           Blue
Top              Red

Her anahtar-değer çiftinin ayrı bir satırda olması gerektiği koşulunu karşılamak için dize, çiftleri ayırmak için PowerShell yeni satır karakterini (`n) kullanır.

Örnek 5: Betiğin 'data' bölümünde kullanın

Bu örnekte, betiğin ConvertFrom-StringData bölümünde kullanılan bir data komutu gösterilmektedir. data bölümünün altındaki deyimler metni kullanıcıya görüntüler.

$TextMsgs = data {
ConvertFrom-StringData @'
Text001 = The $Notebook variable contains the name of the user's system notebook.
Text002 = The $MyNotebook variable contains the name of the user's private notebook.
'@
}
$TextMsgs
Name             Value
----             -----
Text001          The $Notebook variable contains the name of the user's system notebook.
Text002          The $MyNotebook variable contains the name of the user's private notebook.

Metin değişken adları içerdiğinden, değişkenlerin tam anlamıyla yorumlanması ve genişletilmemesi için tek tırnaklı bir dize içine alınması gerekir. data bölümünde değişkenlere izin verilmez.

Örnek 6: Bir dizeyi iletmek için işlem hattı işlecini kullanın

Bu örnek, bir dizeyi |'e göndermek için işlem hattı işlecini (ConvertFrom-StringData) kullanabileceğinizi gösteriyor. $Here değişkeninin değeri ConvertFrom-StringData'e yönlendirilir ve sonuç $Hash değişkeninde olur.

$Here = @'
Msg1 = The string parameter is required.
Msg2 = Credentials are required for this command.
Msg3 = The specified variable doesn't exist.
'@
$Hash = $Here | ConvertFrom-StringData
$Hash
Name     Value
----     -----
Msg3     The specified variable doesn't exist.
Msg2     Credentials are required for this command.
Msg1     The string parameter is required.

Örnek 7: Yeni satırlar eklemek ve karakterleri döndürmek için kaçış karakterlerini kullanma

Bu örnek, kaynak verilerde yeni satırlar ve geri dönüş karakterleri oluşturmak için kaçış karakterlerinin nasıl kullanıldığını göstermektedir. Çıkış dizisi \n, sonuçta elde edilen karma tablodaki bir ad veya öğeyle ilişkili bir metin bloğu içinde yeni satırlar oluşturmak için kullanılır.

ConvertFrom-StringData @"
Vincentio = Heaven doth with us as we with torches do,\nNot light them for themselves; for if our virtues\nDid not go forth of us, 'twere all alike\nAs if we had them not.
Angelo = Let there be some more test made of my metal,\nBefore so noble and so great a figure\nBe stamp'd upon it.
"@ | Format-List
Name  : Angelo
Value : Let there be some more test made of my metal,
        Before so noble and so great a figure
        Be stamp'd upon it.

Name  : Vincentio
Value : Heaven doth with us as we with torches do,
        Not light them for themselves; for if our virtues
        Didn't go forth of us, 'twere all alike
        As if we had them not.

Örnek 8: Dosya yolunu doğru şekilde göstermek için ters eğik çizgi kaçış karakterini kullanma

Bu örnek, bir dosya yolunun elde edilen ConvertFrom-StringData karma tablosunda doğru şekilde görünmesi için dize verilerinde ters eğik çizgi kaçış karakterinin nasıl kullanılacağını göstermektedir. Çift ters eğik çizgi, gerçek ters eğik çizgi karakterlerinin karma tablo çıkışında doğru şekilde görüntülenmesini sağlar.

ConvertFrom-StringData "Message=Look in C:\\Windows\\System32"
Name                           Value
----                           -----
Message                        Look in C:\Windows\System32

Parametreler

-Delimiter

anahtarı dönüştürülmekte olan dizedeki değerden verilerden ayırmak için kullanılan karakter. Varsayılan sınırlayıcı eşittir işareti (=) karakteridir. Bu parametre PowerShell 7'ye eklendi.

Parametre özellikleri

Tür:Char
Default value:=
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

(All)
Position:1
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

-StringData

Dönüştürülecek dizeyi belirtir. Bu parametreyi kullanabilir veya bir diziyi ConvertFrom-StringData'a yönlendirebilirsiniz. Parametre adı isteğe bağlıdır.

Bu parametrenin değeri, bir veya daha fazla anahtar-değer çifti içeren bir dize olmalıdır. Her anahtar-değer çifti ayrı bir satırda olmalıdır veya her çift yeni satır karakterleriyle ayrılmalıdır (`n).

Dizeye açıklamalar ekleyebilirsiniz, ancak açıklamalar anahtar-değer çifti ile aynı satırda olamaz. ConvertFrom-StringData tek satırlı açıklamaları göz ardı eder. Kare işareti (#) satırdaki ilk boşluk dışı karakter olmalıdır. Dize içindeki karma karakterden sonraki tüm karakterler (#) yoksayılır. Yorumlar karma tabloya dahil değildir.

Here-string, bir veya daha fazla satırdan oluşan bir dizedir. Here-string içindeki tırnak işaretleri, tam anlamıyla dize verilerinin bir parçası olarak yorumlanır. Daha fazla bilgi için bkz. about_Quoting_Rules.

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

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

Anahtar-değer çifti içeren bir dizeyi bu cmdlet'e yöneltebilirsiniz.

Çıkışlar

Hashtable

Bu cmdlet, anahtar-değer çiftlerinden oluşturduğu bir karma tablo döndürür.

Notlar

Here-string, tırnak işaretlerinin tam anlamıyla yorumlandığı bir veya daha fazla satırdan oluşan bir dizedir.

Bu cmdlet, kullanıcı iletilerini birden çok konuşulan dilde görüntüleyen betiklerde yararlı olabilir. Metin dizelerini kaynak dosyaları gibi koddan yalıtmak ve metin dizelerini çeviri araçlarında kullanmak üzere biçimlendirmek için sözlük stili karma tabloları kullanabilirsiniz.