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 hashtabel. Omdat elk sleutel-waardepaar op een afzonderlijke regel moet staan, worden here-tekenreeksen vaak gebruikt als de invoerindeling. Standaard moet de sleutel van de waarde worden gescheiden door een gelijkteken (=
).
De ConvertFrom-StringData
cmdlet wordt beschouwd als een veilige cmdlet die kan worden gebruikt in de sectie GEGEVENS van een script of functie. Bij gebruik 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 escapetekenreeksen die zijn toegestaan door conventionele hulpprogramma's voor automatisch vertalen. Dat wil gezegd dat de cmdlet backslashes (\
) kan 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.
In de hier-tekenreeks werkt het teken backtick niet. U kunt ook een letterlijke backslash in uw resultaten behouden door deze te ontsnappen met een voorgaande backslash, zoals: \\
. Niet-weergegeven 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: een tekenreeks met één aanhalingsteken hier converteren naar een hashtabel
In dit voorbeeld wordt een tekenreeks met gebruikersberichten met één aanhalingsteken hier geconverteerd naar een hash-tabel. In een tekenreeks met één aanhalingsteken worden waarden niet vervangen door variabelen en worden expressies 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 een ander scheidingsteken
In dit voorbeeld ziet u hoe u tekenreeksgegevens converteert die een ander teken als scheidingsteken gebruiken. In dit voorbeeld gebruiken de tekenreeksgegevens het sluisteken (|
) 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 here-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 van één regel, maar het #
teken moet het eerste niet-witruimteteken op de regel zijn. Alle tekens op de regel na de #
worden genegeerd.
Voorbeeld 4: een tekenreeks converteren naar een hash-tabel
In dit voorbeeld wordt een reguliere tekenreeks met dubbele aanhalingstekens (geen hier-tekenreeks) geconverteerd naar een hashtabel en 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 zich op een afzonderlijke regel moet bevinden, gebruikt de tekenreeks het PowerShell-teken voor de nieuwe regel (`n
) om de paren te scheiden.
Voorbeeld 5: gebruik ConvertFrom-StringData in de sectie GEGEVENS van een script
In dit voorbeeld ziet u een ConvertFrom-StringData
opdracht die wordt gebruikt in de sectie GEGEVENS 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 GEGEVENS .
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-StringData
verzenden. 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 escape-tekens om nieuwe regels te maken en tekens in brongegevens te retourneren. De escape-reeks \n
wordt gebruikt om nieuwe regels te maken binnen een tekstblok dat is gekoppeld aan een naam of item in de resulterende hashtabel.
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: een backslash-escapeteken gebruiken om een bestandspad correct weer te geven
In dit voorbeeld ziet u hoe u het backslash-escapeteken in de tekenreeksgegevens gebruikt om een bestandspad correct weer te geven in de resulterende ConvertFrom-StringData
hashtabel. De dubbele backslash zorgt ervoor dat de letterlijke backslashtekens correct worden weergegeven in de uitvoer van de hashtabel.
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 doorsnijden 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 mogen zich niet op dezelfde regel bevinden als een sleutel-waardepaar. ConvertFrom-StringData
negeert opmerkingen van één regel. Het #
teken moet het eerste niet-witruimteteken op de regel zijn. Alle tekens op de regel na de #
worden genegeerd. De opmerkingen zijn niet opgenomen in de hash-tabel.
Een here-tekenreeks is een tekenreeks die uit een of meer regels bestaat. Aanhalingstekens in de here-string 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
U kunt een tekenreeks met een sleutel-waardepaar doorsnijden naar deze cmdlet.
Uitvoerwaarden
Deze cmdlet retourneert een hash-tabel die wordt gemaakt op basis van de sleutel-waardeparen.
Notities
Een here-tekenreeks is een tekenreeks die bestaat uit een of meer regels waarin aanhalingstekens letterlijk worden geïnterpreteerd.
Deze cmdlet kan handig zijn in scripts die gebruikersberichten in meerdere gesproken talen weergeven. 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.