Freigeben über


about_Data_Sections

Kurze Beschreibung

Erläutert Datenabschnitte, die Textzeichenfolgen und andere schreibgeschützte Daten aus der Skriptlogik isolieren.

Lange Beschreibung

Skripts, die für PowerShell entwickelt wurden, können einen oder mehrere Datenabschnitte enthalten, die nur Daten enthalten. Sie können einen oder mehrere Datenabschnitte in jedes Skript, jede Funktion oder eine erweiterte Funktion einschließen. Der Inhalt des Abschnitts Daten ist auf eine angegebene Teilmenge der PowerShell-Skriptsprache beschränkt.

Durch die Trennung von Daten von Der Codelogik können Sowohl Logik als auch Daten leichter identifiziert und verwaltet werden. Es ermöglicht Ihnen separate Zeichenfolgenressourcendateien für Text, z. B. Fehlermeldungen und Hilfezeichenfolgen. Außerdem wird die Codelogik isoliert, wodurch Sicherheits- und Validierungstests erleichtert werden.

In PowerShell wird der Abschnitt Daten verwendet, um die Skript internationalisierung zu unterstützen. Sie können Datenabschnitte verwenden, um das Isolieren, Suchen und Verarbeiten von Zeichenfolgen zu erleichtern, die in viele Benutzeroberflächensprachen übersetzt werden.

Der Abschnitt Daten ist ein PowerShell 2.0-Feature. Skripts mit Datenabschnitten werden in PowerShell 1.0 ohne Revision nicht ausgeführt.

Syntax

Die Syntax für einen Datenabschnitt lautet wie folgt:

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

Die daten-Schlüsselwort (keyword) ist erforderlich. Es wird nicht zwischen Groß- und Kleinschreibung unterschieden. 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. die folgenden:

    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 einem Datenabschnitt zulässig sind. Standardmäßig ist nur das ConvertFrom-StringData Cmdlet zulässig.

  • Cmdlets, die Sie in einem Datenabschnitt mithilfe des -SupportedCommand Parameters zulassen.

Wenn Sie das ConvertFrom-StringData Cmdlet in einem Datenabschnitt verwenden, können Sie die Schlüssel-Wert-Paare in Zeichenfolgen mit einem oder doppelten Anführungszeichen oder in Zeichenfolgen mit einem oder doppelten Anführungszeichen einschließen. Zeichenfolgen, die Variablen und Unterausdrücke enthalten, müssen jedoch in Zeichenfolgen mit einzelzitiertem Anführungszeichen oder in Zeichenfolgen mit einzelzitiertem Anführungszeichen eingeschlossen werden, damit die Variablen nicht erweitert werden und die Teilausdrücke nicht ausführbar sind.

-SupportedCommand

Mit -SupportedCommand dem Parameter können Sie angeben, dass ein Cmdlet oder eine Funktion nur Daten generiert. Es ist so konzipiert, dass Benutzer Cmdlets und Funktionen in einen Datenabschnitt einschließen können, den sie geschrieben oder getestet haben.

Der Wert von -SupportedCommand ist eine durch Trennzeichen getrennte Liste mit einem oder mehreren Cmdlet- oder Funktionsnamen.

Der folgende Datenabschnitt enthält beispielsweise ein vom Benutzer geschriebenes Cmdlet , Format-Xmldas Daten in einer XML-Datei formatiert:

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

Verwenden eines Datenabschnitts

Um den Inhalt eines Datenabschnitts zu verwenden, weisen Sie ihn einer Variablen zu, und verwenden Sie die Variablennotation, um auf den Inhalt zuzugreifen.

Der folgende Datenabschnitt enthält beispielsweise einen ConvertFrom-StringData Befehl, der die here-Zeichenfolge in eine Hashtabelle konvertiert. Die Hashtabelle ist der $TextMsgs Variablen zugewiesen.

Die $TextMsgs Variable ist nicht Teil des Datenabschnitts.

$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 $TextMsgsder Hashtabelle zuzugreifen.

$TextMsgs.Text001
$TextMsgs.Text002

Alternativ können Sie den Variablennamen in die Definition des Abschnitts Daten einfügen. 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-Zeichenfolge mit einem einzigen Anführungszeichen, die das ConvertFrom-StringData Cmdlet verwendet:

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

Eine hier-Zeichenfolge mit doppeltem Anführungszeichen, 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
}

Weitere Informationen

about_Automatic_Variables

about_Comparison_Operators

about_Hash_Tables

about_If

about_Operators

about_Quoting_Rules

about_Script_Internationalization

ConvertFrom-StringData

Import-LocalizedData