ConvertFrom-StringData

Converteert een tekenreeks met een of meer sleutel- en waardeparen naar een hash-tabel.

Syntax

ConvertFrom-StringData
                [-StringData] <String>
                [[-Delimiter] <Char>]
                [<CommonParameters>]

Description

De ConvertFrom-StringData cmdlet converteert een tekenreeks die een of meer sleutel- en waardeparen bevat naar een hash-tabel. Omdat elk sleutel-waardepaar op een afzonderlijke regel moet staan, worden hier-tekenreeksen vaak gebruikt als invoerindeling. De sleutel moet standaard worden gescheiden van de waarde door een gelijkteken (=teken).

De ConvertFrom-StringData cmdlet wordt beschouwd als een veilige cmdlet die kan worden gebruikt in de sectie DATA van een script of functie. Wanneer deze wordt gebruikt in een sectie DATA , moet de inhoud van de tekenreeks voldoen aan de regels voor een sectie DATA . Zie about_Data_Sections voor meer informatie.

ConvertFrom-StringData ondersteunt escape-tekenreeksen die zijn toegestaan door conventionele hulpprogramma's voor machinevertaling. Dat wil gezegd, de cmdlet kan backslashes (\) interpreteren als escapetekens in de tekenreeksgegevens met behulp van de Methode Regex.Unescape, in plaats van het PowerShell-backtickteken (`) dat normaal gesproken het einde van een regel in een script aangeeft. Binnen de hier-tekenreeks werkt het teken backtick niet. U kunt ook een letterlijke backslash in uw resultaten behouden door deze te ontsnappen aan een voorgaande backslash, zoals deze: \\. Niet-gescaped backslashtekens, zoals tekens die vaak worden gebruikt in bestandspaden, kunnen worden weergegeven als ongeldige escapereeksen in uw resultaten.

PowerShell 7 voegt de parameter Scheidingsteken toe.

Voorbeelden

Voorbeeld 1: Hier een enkele aanhalingstekenreeks converteren naar een hash-tabel

In dit voorbeeld wordt een enkele aanhalingstekenreeks van gebruikersberichten geconverteerd naar een hash-tabel. In een tekenreeks met één aanhalingsteken worden waarden niet vervangen door variabelen en expressies worden ze niet geëvalueerd. De ConvertFrom-StringData cmdlet converteert de waarde in de $Here variabele naar een hash-tabel.

$Here = @'
Msg1 = The string parameter is required.
Msg2 = Credentials are required for this command.
Msg3 = The specified variable does not exist.
'@
ConvertFrom-StringData -StringData $Here

Name                           Value
----                           -----
Msg3                           The specified variable does not exist.
Msg2                           Credentials are required for this command.
Msg1                           The string parameter is required.

Voorbeeld 2: Tekenreeksgegevens converteren met behulp van een ander scheidingsteken

In dit voorbeeld ziet u hoe u tekenreeksgegevens converteert die een ander teken gebruiken als scheidingsteken. In dit voorbeeld gebruiken de tekenreeksgegevens het pipeteken (|) als scheidingsteken.

$StringData = @'
color|red
model|coupe
year|1965
condition|mint
'@
$carData = ConvertFrom-StringData -StringData $StringData -Delimiter '|'
$carData

Name                           Value
----                           -----
condition                      mint
model                          coupe
color                          red
year                           1965

Voorbeeld 3: Een hier-tekenreeks met een opmerking converteren

In dit voorbeeld wordt een hier-tekenreeks met een opmerking en meerdere sleutel-waardeparen geconverteerd naar een hash-tabel.

ConvertFrom-StringData -StringData @'
Name = Disks.ps1

# Category is optional.

Category = Storage
Cost = Free
'@

Name                           Value
----                           -----
Cost                           Free
Category                       Storage
Name                           Disks.ps1

De waarde van de parameter StringData is een here-string, in plaats van een variabele die een here-string bevat. Beide indelingen zijn geldig. De hier-tekenreeks bevat een opmerking over een van de tekenreeksen. ConvertFrom-StringData negeert opmerkingen met één regel, maar het teken moet het # eerste niet-witruimteteken op de regel zijn. Alle tekens op de regel nadat de # regel is genegeerd.

Voorbeeld 4: Een tekenreeks converteren naar een hash-tabel

In dit voorbeeld wordt een gewone tekenreeks met dubbele aanhalingstekens (niet een hier-tekenreeks) geconverteerd naar een hash-tabel en wordt deze opgeslagen in de $A variabele.

$A = ConvertFrom-StringData -StringData "Top = Red `n Bottom = Blue"
$A

Name             Value
----             -----
Bottom           Blue
Top              Red

Om te voldoen aan de voorwaarde dat elk sleutel-waardepaar op een afzonderlijke regel moet staan, gebruikt de tekenreeks het nieuwe-regelteken van PowerShell (`n) om de paren te scheiden.

Voorbeeld 5: ConvertFrom-StringData gebruiken in de sectie DATA van een script

In dit voorbeeld ziet u een ConvertFrom-StringData opdracht die wordt gebruikt in de sectie DATA van een script. In de instructies onder de sectie DATA wordt de tekst voor de gebruiker weergegeven.

$TextMsgs = DATA {
ConvertFrom-StringData @'
Text001 = The $Notebook variable contains the name of the user's system notebook.
Text002 = The $MyNotebook variable contains the name of the user's private notebook.
'@
}
$TextMsgs

Name             Value
----             -----
Text001          The $Notebook variable contains the name of the user's system notebook.
Text002          The $MyNotebook variable contains the name of the user's private notebook.

Omdat de tekst namen van variabelen bevat, moet deze worden ingesloten in een tekenreeks met één aanhalingsteken, zodat de variabelen letterlijk worden geïnterpreteerd en niet worden uitgevouwen. Variabelen zijn niet toegestaan in de sectie DATA .

Voorbeeld 6: De pijplijnoperator gebruiken om een tekenreeks door te geven

In dit voorbeeld ziet u dat u een pijplijnoperator (|) kunt gebruiken om een tekenreeks naar te ConvertFrom-StringDataverzenden. De waarde van de $Here variabele wordt doorgesluisd naar ConvertFrom-StringData en het resultaat in de $Hash variabele.

$Here = @'
Msg1 = The string parameter is required.
Msg2 = Credentials are required for this command.
Msg3 = The specified variable does not exist.
'@
$Hash = $Here | ConvertFrom-StringData
$Hash

Name     Value
----     -----
Msg3     The specified variable does not exist.
Msg2     Credentials are required for this command.
Msg1     The string parameter is required.

Voorbeeld 7: Escape-tekens gebruiken om nieuwe regels toe te voegen en tekens te retourneren

In dit voorbeeld ziet u het gebruik van escapetekens om nieuwe regels te maken en tekens in brongegevens te retourneren. De escapereeks \n wordt gebruikt om nieuwe regels te maken binnen een tekstblok dat is gekoppeld aan een naam of item in de resulterende hash-tabel.

ConvertFrom-StringData @"
Vincentio = Heaven doth with us as we with torches do,\nNot light them for themselves; for if our virtues\nDid not go forth of us, 'twere all alike\nAs if we had them not.
Angelo = Let there be some more test made of my metal,\nBefore so noble and so great a figure\nBe stamp'd upon it.
"@ | Format-List

Name  : Angelo
Value : Let there be some more test made of my metal,
        Before so noble and so great a figure
        Be stamp'd upon it.

Name  : Vincentio
Value : Heaven doth with us as we with torches do,
        Not light them for themselves; for if our virtues
        Did not go forth of us, 'twere all alike
        As if we had them not.

Voorbeeld 8: Het escapeteken backslash gebruiken om een bestandspad correct weer te geven

In dit voorbeeld ziet u hoe u het escapeteken backslash gebruikt in de tekenreeksgegevens, zodat een bestandspad correct kan worden weergegeven in de resulterende ConvertFrom-StringData hash-tabel. De dubbele backslash zorgt ervoor dat de letterlijke backslash-tekens correct worden weergegeven in de uitvoer van de hash-tabel.

ConvertFrom-StringData "Message=Look in c:\\Windows\\System32"

Name                           Value
----                           -----
Message                        Look in c:\Windows\System32

Parameters

-Delimiter

Het teken dat wordt gebruikt om de sleutel te scheiden van de waardegegevens in de tekenreeks die wordt geconverteerd. Het standaardscheidingsteken is het gelijkteken (=) . Deze parameter is toegevoegd in PowerShell 7.

Type:Char
Position:1
Default value:'='
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-StringData

Hiermee geeft u de tekenreeks die moet worden geconverteerd. U kunt deze parameter gebruiken of een tekenreeks doorsluisen naar ConvertFrom-StringData. De parameternaam is optioneel.

De waarde van deze parameter moet een tekenreeks zijn die een of meer sleutel-waardeparen bevat. Elk sleutel-waardepaar moet zich op een afzonderlijke regel bevinden of elk paar moet worden gescheiden door nieuwe regeltekens (`n).

U kunt opmerkingen opnemen in de tekenreeks, maar de opmerkingen kunnen niet op dezelfde regel staan als een sleutel-waardepaar. ConvertFrom-StringData negeert opmerkingen met één regel. Het # teken moet het eerste niet-witruimteteken op de regel zijn. Alle tekens op de regel nadat de # regel is genegeerd. De opmerkingen zijn niet opgenomen in de hash-tabel.

Een here-string is een tekenreeks die bestaat uit een of meer regels. Aanhalingstekens binnen de hier-tekenreeks worden letterlijk geïnterpreteerd als onderdeel van de tekenreeksgegevens. Zie about_Quoting_Rules voor meer informatie.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

Invoerwaarden

String

U kunt een tekenreeks met een sleutel-waardepaar doorsluisen naar deze cmdlet.

Uitvoerwaarden

Hashtable

Deze cmdlet retourneert een hash-tabel die wordt gemaakt op basis van de sleutel-waardeparen.

Notities

Een here-string is een tekenreeks die bestaat uit een of meer regels waarin aanhalingstekens letterlijk worden geïnterpreteerd.

Deze cmdlet kan handig zijn in scripts waarin gebruikersberichten in meerdere gesproken talen worden weergegeven. U kunt de hashtabellen in woordenlijststijl gebruiken om tekenreeksen te isoleren van code, zoals in resourcebestanden, en om de tekenreeksen op te maken voor gebruik in vertaalhulpmiddelen.