Freigeben über


about_Data_Sections

Kurze Beschreibung

Erläutert DATA Abschnitte, die Textstrings und andere schreibgeschützte Daten von der Skriptlogik isolieren.

Lange Beschreibung

Skripts, die für PowerShell entwickelt wurden, können einen oder mehrere DATA Abschnitte enthalten, die nur Daten enthalten. Sie können einen oder mehrere DATA-Abschnitte in ein beliebiges Skript, eine Funktion oder eine erweiterte Funktion einschließen. Der Inhalt des abschnitts DATA ist auf eine bestimmte Teilmenge der PowerShell-Skriptsprache beschränkt.

Das Trennen von Daten aus der Codelogik erleichtert das Identifizieren und Verwalten von Logik und Daten. Sie können separate Zeichenfolgenressourcendateien für Text verwenden, z. B. Fehlermeldungen und Hilfezeichenfolgen. Sie isoliert auch die Codelogik, die Sicherheits- und Validierungstests erleichtert.

In PowerShell können Sie den Abschnitt DATA verwenden, um die Skript-Internationalisierung zu unterstützen. Sie können DATA-Abschnitte verwenden, um das Isolieren, Finden und Verarbeiten von Zeichenfolgen zu vereinfachen, die in andere Sprachen übersetzt werden können.

Der Abschnitt DATA wurde im PowerShell 2.0-Feature hinzugefügt.

Syntax

Die Syntax für eine DATA lautet wie folgt:

DATA [<variable-name>] [-supportedCommand <cmdlet-name>] {
    <Permitted content>
}

Das Schlüsselwort DATA ist erforderlich. Groß- und Kleinschreibung wird nicht beachtet. Der zulässige Inhalt ist auf die folgenden Elemente beschränkt:

  • Alle PowerShell-Operatoren außer -match

  • If-, Else- und ElseIf-Anweisungen

  • Die folgenden automatischen Variablen: $PsCulture, , $PsUICulture$True, , $Falseund$Null

  • Kommentare

  • Pipelines

  • Durch Semikolons getrennte Anweisungen (;)

  • Literale, z. B. folgendes:

    a
    1
    1,2,3
    "PowerShell 2.0"
    @( "red", "green", "blue" )
    @{ a = 0x1; b = "great"; c ="script" }
    [XML] @'
    <p> Hello, World </p>
    '@
    
  • Cmdlets, die in einer DATA Abschnitt erlaubt sind. Standardmäßig ist nur das ConvertFrom-StringData Cmdlet zulässig.

  • Cmdlets, die Sie in einem DATA Abschnitt zulassen, indem Sie den -SupportedCommand Parameter verwenden.

Wenn Sie die ConvertFrom-StringData Cmdlet in einer DATA können Sie die Schlüssel-Wert-Paare in Strings in einfachen oder doppelten Anführungszeichen oder in here-Strings in einfachen oder doppelten Anführungszeichen einschließen. Strings, die Variablen und Unterausdrücke enthalten, müssen jedoch in Strings in einfachen Anführungszeichen oder in here-Strings in einfachen Anführungszeichen eingeschlossen werden, damit die Variablen nicht expandiert werden und die Unterausdrücke nicht ausführbar sind.

-SupportedCommand

Mit dem parameter SupportedCommand können Sie angeben, dass ein Cmdlet oder eine Funktion nur Daten generiert. Es ist so konzipiert, dass Benutzer Cmdlets und Funktionen in einen DATA Abschnitt aufnehmen können, den sie geschrieben oder getestet haben.

Der Wert von UnterstützterBefehl ist eine durch Komma getrennte Liste von einem oder mehreren Cmdlet- oder Funktionsnamen.

Der folgende DATA Abschnitt enthält beispielsweise ein vom Benutzer geschriebenes Cmdlet, Format-Xml, das Daten in einer XML-Datei formatiert:

DATA -supportedCommand Format-Xml
{
    Format-Xml -Strings string1, string2, string3
}

Verwendung einer DATA Sektion

Um den Inhalt eines DATA Abschnitts zu verwenden, weisen Sie ihn einer Variablen zu, und verwenden Sie die Variablenotation, um auf den Inhalt zuzugreifen.

Der folgende DATA-Abschnitt enthält beispielsweise einen ConvertFrom-StringData-Befehl, der den Here-String in eine Hashtabelle konvertiert. Die Hashtabelle wird der $TextMsgs Variablen zugewiesen.

Die $TextMsgs Variable ist nicht Teil des abschnitts DATA.

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

Verwenden Sie die folgenden Befehle, um auf die Schlüssel und Werte in der Hashtabelle $TextMsgszuzugreifen.

$TextMsgs.Text001
$TextMsgs.Text002

Alternativ können Sie den Variablennamen in die Definition des Abschnitts DATA einfügen. Zum Beispiel:

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

$TextMsgs

Das Ergebnis entspricht dem vorherigen Beispiel.

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

Beispiele

Einfache Datenzeichenfolgen.

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

Zeichenfolgen, die zulässige Variablen enthalten.

DATA {
    if ($null) {
        "To get help for this cmdlet, type get-help new-dictionary."
    }
}

Eine hier zitierte einzel zitierte Zeichenfolge, die das ConvertFrom-StringData Cmdlet verwendet:

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

Eine hier zitierte doppelte Zeichenfolge, die das ConvertFrom-StringData Cmdlet verwendet:

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

Ein Datenabschnitt, der ein vom Benutzer geschriebenes Cmdlet enthält, das Daten generiert:

DATA -supportedCommand Format-XML {
    Format-Xml -strings string1, string2, string3
}

Siehe auch