Udostępnij za pośrednictwem


about_Data_Sections

Krótki opis

Objaśnia sekcje data, które izolują ciągi tekstowe i inne dane wyłącznie do odczytu od logiki skryptu.

Długi opis

Skrypty przeznaczone dla programu PowerShell mogą zawierać co najmniej jedną sekcję data zawierającą tylko dane. Możesz dołączyć co najmniej jedną sekcję data do dowolnego skryptu, funkcji lub funkcji zaawansowanej. Zawartość sekcji data jest ograniczona do określonego podzestawu języka skryptowego programu PowerShell.

Oddzielenie danych od logiki kodu ułatwia identyfikowanie zarówno logiki, jak i danych oraz zarządzanie nimi. Umożliwia ona posiadanie oddzielnych plików zasobów ciągów dla tekstu, takich jak komunikaty o błędach i ciągi Pomocy. Izoluje również logikę kodu, która ułatwia testy zabezpieczeń i weryfikacji.

W programie PowerShell możesz użyć sekcji data do obsługi międzynarodowych skryptów. Możesz użyć data sekcji, aby ułatwić izolowanie, lokalizowanie i przetwarzanie ciągów, które można przetłumaczyć na inne języki.

Sekcja data została dodana w funkcji programu PowerShell 2.0.

Składnia

Składnia sekcji data jest następująca:

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

Słowo kluczowe data jest wymagane. Nie uwzględnia wielkości liter. Dozwolona zawartość jest ograniczona do następujących elementów:

  • Wszystkie operatory programu PowerShell, z wyjątkiem -match

  • if, else, i elseif instrukcje

  • Następujące zmienne automatyczne: $PSCulture, , $PSUICulture$true, $falsei$null

  • Komentarze

  • Pipelines

  • Instrukcje rozdzielone średnikami (;)

  • Literały, takie jak:

    a
    1
    1,2,3
    "PowerShell 2.0"
    @( "red", "green", "blue" )
    @{ a = 0x1; b = "great"; c ="script" }
    [xml] @'
    <p> Hello, World </p>
    '@
    
  • Polecenia cmdlet, które są dozwolone w sekcji data. Domyślnie dozwolone jest tylko ConvertFrom-StringData polecenie cmdlet.

  • Polecenia cmdlet, na które zezwalasz w sekcji data, używając parametru -SupportedCommand.

W przypadku używania polecenia cmdlet ConvertFrom-StringData w sekcji data można umieścić pary klucz-wartość w ciągach ujętych w pojedyncze lub podwójne cudzysłowy albo w ciągach here-strings ujętych w pojedyncze lub podwójne cudzysłowy. Jednak ciągi, które zawierają zmienne i podwyrażenia, muszą być ujęte w ciągi w pojedynczym cudzysłowie lub w ciągi Here w pojedynczym cudzysłowie, aby zmienne nie były rozwijane, a podwyrażenia nie były wykonywalne.

-SupportedCommand

Parametr SupportedCommand umożliwia wskazanie, że polecenie cmdlet lub funkcja generuje tylko dane. Jest zaprojektowana, aby umożliwić użytkownikom dołączanie cmdletów i funkcji w sekcji data, którą napisali lub przetestowali.

Wartość SupportedCommand to rozdzielona przecinkami lista co najmniej jednego polecenia cmdlet lub nazw funkcji.

Na przykład następująca sekcja data zawiera napisane przez użytkownika polecenie cmdlet, Format-Xml, które formatuje dane w pliku XML:

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

Korzystanie z sekcji data

Aby użyć zawartości sekcji data, przypisz ją do zmiennej i użyj notacji zmiennych, aby uzyskać dostęp do zawartości.

Na przykład poniższa sekcja data zawiera polecenie ConvertFrom-StringData, które konwertuje tutaj-ciąg na tabelę skrótów. Tabela skrótów jest przypisywana do zmiennej $TextMsgs .

Zmienna $TextMsgs nie jest częścią sekcji data.

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

Aby uzyskać dostęp do kluczy i wartości w tabeli skrótów w programie $TextMsgs, użyj następujących poleceń.

$TextMsgs.Text001
$TextMsgs.Text002

Alternatywnie możesz umieścić nazwę zmiennej w definicji sekcji data. Na przykład:

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

$TextMsgs

Wynik jest taki sam jak w poprzednim przykładzie.

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

Przykłady

Proste ciągi danych.

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."
}

Ciągi zawierające dozwolone zmienne.

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

Jeden cytowany tutaj ciąg, który używa ConvertFrom-StringData polecenia cmdlet :

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

Dwukrotnie cytowany tutaj ciąg, który używa ConvertFrom-StringData polecenia cmdlet :

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

Sekcja danych zawierająca napisane przez użytkownika polecenie cmdlet, które generuje dane:

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

Zobacz też