about_Data_Sections

Kısa açıklama

data bölümlerini açıklar; bu bölümler metin dizelerini ve diğer salt okunur verileri betik mantığından yalıtır.

Uzun açıklama

PowerShell için tasarlanan betiklerde yalnızca veri içeren bir veya daha fazla data bölümü olabilir. Herhangi bir betik, fonksiyon veya gelişmiş fonksiyona bir veya daha fazla data bölümü ekleyebilirsiniz. data bölümünün içeriği, PowerShell betik dilinin belirtilen bir alt kümesiyle sınırlıdır.

Verileri kod mantığından ayırmak, hem mantığı hem de verileri tanımlamayı ve yönetmeyi kolaylaştırır. Hata iletileri ve Yardım dizeleri gibi metinler için ayrı dize kaynak dosyalarına sahip olmanıza olanak tanır. Ayrıca güvenlik ve doğrulama testlerini kolaylaştıran kod mantığını yalıtıyor.

PowerShell'de, betiğin uluslararasılaştırılmasını desteklemek için data bölümünü kullanabilirsiniz. Diğer dillere çevrilebilen dizeleri yalıtma, bulma ve işleme işlemlerini kolaylaştırmak için data bölümleri kullanabilirsiniz.

data bölümü PowerShell 2.0 özelliğine eklendi.

Sözdizimi

data bölümünün söz dizimi aşağıdaki gibidir:

data [<variable-name>] [-SupportedCommand <cmdlet-name>] {
    <Permitted content>
}

data anahtar sözcüğü gereklidir. Büyük/küçük harfe duyarlı değildir. İzin verilen içerik aşağıdaki öğelerle sınırlıdır:

  • Dışındaki tüm PowerShell işleçleri -match

  • if, elseve elseif deyimleri

  • Aşağıdaki otomatik değişkenler: $PSCulture, $PSUICulture, $true, $falseve $null

  • Açıklamalar

  • Pipelines

  • Noktalı virgülle ayrılmış deyimler (;)

  • Değişmez değerler, örneğin:

    a
    1
    1,2,3
    "PowerShell 2.0"
    @( "red", "green", "blue" )
    @{ a = 0x1; b = "great"; c ="script" }
    [xml] @'
    <p> Hello, World </p>
    '@
    
  • data bölümünde izin verilen cmdlet'ler. Varsayılan olarak, yalnızca ConvertFrom-StringData cmdlet'e izin verilir.

  • data parametresini kullanarak bir -SupportedCommand bölümünde izin verilen cmdlet'ler.

ConvertFrom-StringData bir bölümde data cmdlet'ini kullandığınızda, anahtar-değer çiftlerini tek tırnaklı veya çift tırnaklı dizelere ya da tek tırnaklı veya çift tırnaklı metin bloklarına (here-strings) içine alabilirsiniz. Ancak değişkenler ve alt ifadeler içeren dizeler, değişkenlerin genişletilmeyecek ve alt ifadelerin yürütülemez olması için tek tırnaklı dizeler veya tek tırnaklı here-strings içine alınmalıdır.

-SupportedCommand

SupportedCommand parametresi, bir cmdlet'in veya işlevin yalnızca veri oluşturduğunu belirtmenizi sağlar. Kullanıcıların yazdıkları veya test ettikleri bir data bölümüne cmdlet'leri ve işlevleri dahil etmelerini sağlamak için tasarlanmıştır.

SupportedCommand değeri, bir veya daha fazla cmdlet veya işlev adının virgülle ayrılmış listesidir.

Örneğin, aşağıdaki data bölümü, xml dosyasındaki verileri biçimlendiren Format-Xmlkullanıcı tarafından yazılmış bir cmdlet içerir:

data -SupportedCommand Format-Xml
{
    Format-Xml -Strings string1, string2, string3
}

data Bölümü Kullanma

bir data bölümünün içeriğini kullanmak için bunu bir değişkene atayın ve içeriğe erişmek için değişken gösterimini kullanın.

Örneğin, aşağıdaki data bölümü, buradaki dizeyi karma tabloya dönüştüren bir ConvertFrom-StringData komutu içerir. Karma tablo değişkenine $TextMsgs atanır.

$TextMsgs değişkeni data bölümünün bir parçası değildir.

$TextMsgs = data {
    ConvertFrom-StringData -StringData @'
Text001 = Windows 7
Text002 = Windows Server 2008 R2
'@
}

içindeki $TextMsgskarma tablosundaki anahtarlara ve değerlere erişmek için aşağıdaki komutları kullanın.

$TextMsgs.Text001
$TextMsgs.Text002

Alternatif olarak, değişken adını data bölümünün tanımına koyabilirsiniz. Örneğin:

data TextMsgs {
    ConvertFrom-StringData -StringData @'
Text001 = Windows 7
Text002 = Windows Server 2008 R2
'@
}

$TextMsgs

Sonuç, önceki örnekle aynıdır.

Name                           Value
----                           -----
Text001                        Windows 7
Text002                        Windows Server 2008 R2

Örnekler

Basit veri dizeleri.

data {
    "Thank you for using my PowerShell Organize.pst script."
    "It is provided free of charge to the community."
    "I appreciate your comments and feedback."
}

İzin verilen değişkenleri içeren dizeler.

data {
    if ($null) {
        "To get help for this cmdlet, type Get-Help New-Dictionary."
    }
}

cmdlet'ini kullanan tek tırnaklı ConvertFrom-StringData bir here-string:

data {
    ConvertFrom-StringData -StringData @'
Text001 = Windows 7
Text002 = Windows Server 2008 R2
'@
}

cmdlet'ini kullanan çift tırnaklı ConvertFrom-StringData bir here-string:

data {
    ConvertFrom-StringData -StringData @"
Msg1 = To start, press any key.
Msg2 = To exit, type "quit".
"@
}

Veri oluşturan kullanıcı tarafından yazılmış bir cmdlet içeren veri bölümü:

data -SupportedCommand Format-Xml {
    Format-Xml -Strings string1, string2, string3
}

Ayrıca bakınız