Delen via


about_Data_Sections

Korte beschrijving

Uitleg van gegevenssecties, waarmee teksttekenreeksen en andere alleen-lezen gegevens worden geïsoleerd van scriptlogica.

Lange beschrijving

Scripts die zijn ontworpen voor PowerShell, kunnen een of meer gegevenssecties bevatten die alleen gegevens bevatten. U kunt een of meer secties Gegevens opnemen in een script, functie of geavanceerde functie. De inhoud van de sectie Gegevens is beperkt tot een opgegeven subset van de PowerShell-scripttaal.

Door gegevens van codelogica te scheiden, kunt u zowel logica als gegevens gemakkelijker identificeren en beheren. Hiermee kunt u afzonderlijke bronbestanden voor tekenreeksen voor tekst hebben, zoals foutberichten en Help-tekenreeksen. Het isoleert ook de codelogica, waardoor beveiligings- en validatietests worden vergemakkelijkt.

In PowerShell wordt de sectie Gegevens gebruikt ter ondersteuning van internationalisatie van scripts. U kunt Gegevenssecties gebruiken om het gemakkelijker te maken om tekenreeksen te isoleren, te zoeken en te verwerken die worden vertaald in veel talen van de gebruikersinterface (UI).

De sectie Gegevens is een PowerShell 2.0-functie. Scripts met gegevenssecties worden niet uitgevoerd in PowerShell 1.0 zonder revisie.

Syntax

De syntaxis voor een sectie Gegevens is als volgt:

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

Het trefwoord Gegevens is vereist. Het is niet hoofdlettergevoelig. De toegestane inhoud is beperkt tot de volgende elementen:

  • Alle PowerShell-operators, behalve -match

  • If, Elseen-instructies ElseIf

  • De volgende automatische variabelen: $PsCulture, $PsUICulture, $True, $Falseen $Null

  • Opmerkingen

  • Pipelines

  • Instructies gescheiden door puntkomma's (;)

  • Letterlijke waarden, zoals de volgende:

    a
    1
    1,2,3
    "PowerShell 2.0"
    @( "red", "green", "blue" )
    @{ a = 0x1; b = "great"; c ="script" }
    [XML] @'
    <p> Hello, World </p>
    '@
    
  • Cmdlets die zijn toegestaan in een sectie Gegevens. Standaard is alleen de ConvertFrom-StringData cmdlet toegestaan.

  • Cmdlets die u toestaat in een sectie Gegevens met behulp van de -SupportedCommand parameter .

Wanneer u de ConvertFrom-StringData cmdlet in een sectie Gegevens gebruikt, kunt u de sleutel-waardeparen insluiten in tekenreeksen met één of twee aanhalingstekens of in tekenreeksen met één aanhalingsteken of dubbel aanhalingstekens. Tekenreeksen die variabelen en subexpressies bevatten, moeten echter worden ingesloten in tekenreeksen met één aanhalingsteken of in tekenreeksen met enkel aanhalingstekens, zodat de variabelen niet worden uitgevouwen en de subexpressies niet uitvoerbaar zijn.

-SupportedCommand

Met de -SupportedCommand parameter kunt u aangeven dat een cmdlet of functie alleen gegevens genereert. Het is ontworpen om gebruikers in staat te stellen cmdlets en functies op te nemen in een gegevenssectie die ze hebben geschreven of getest.

De waarde van -SupportedCommand is een door komma's gescheiden lijst met een of meer cmdlet- of functienamen.

De volgende gegevenssectie bevat bijvoorbeeld een door de gebruiker geschreven cmdlet, Format-Xml, waarmee gegevens in een XML-bestand worden opgemaakt:

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

Een gegevenssectie gebruiken

Als u de inhoud van een sectie Gegevens wilt gebruiken, wijst u deze toe aan een variabele en gebruikt u variabelenotatie om toegang te krijgen tot de inhoud.

De volgende gegevenssectie bevat bijvoorbeeld een ConvertFrom-StringData opdracht waarmee de here-tekenreeks wordt geconverteerd naar een hash-tabel. De hashtabel wordt toegewezen aan de $TextMsgs variabele.

De $TextMsgs variabele maakt geen deel uit van de gegevenssectie.

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

Gebruik de volgende opdrachten om toegang te krijgen tot de sleutels en waarden in de hash-tabel in $TextMsgs.

$TextMsgs.Text001
$TextMsgs.Text002

U kunt ook de naam van de variabele in de definitie van de sectie Gegevens plaatsen. Bijvoorbeeld:

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

$TextMsgs

Het resultaat is hetzelfde als in het vorige voorbeeld.

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

Voorbeelden

Eenvoudige gegevensreeksen.

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

Tekenreeksen die toegestane variabelen bevatten.

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

Een tekenreeks met één aanhalingsteken die gebruikmaakt van de ConvertFrom-StringData cmdlet:

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

Een tekenreeks met dubbele aanhalingstekens die gebruikmaakt van de ConvertFrom-StringData cmdlet:

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

Een gegevenssectie met een door de gebruiker geschreven cmdlet waarmee gegevens worden gegenereerd:

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

Zie ook