ConvertFrom-StringData
Converteert een tekenreeks met een of meer sleutel- en waardeparen naar een hash-tabel.
Syntaxis
ConvertFrom-StringData
[-StringData] <String>
[[-Delimiter] <Char>]
[<CommonParameters>]
Description
Met de cmdlet ConvertFrom-StringData
wordt een tekenreeks met een of meer sleutel- en waardeparen geconverteerd 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 data
sectie van een script of functie. Wanneer de inhoud van de tekenreeks wordt gebruikt in een data
sectie, moet deze voldoen aan de regels voor een data
sectie. Zie about_Data_Sectionsvoor meer informatie.
ConvertFrom-StringData
ondersteunt escape-tekenreeksen die zijn toegestaan door conventionele hulpprogramma's voor automatische vertaling. Dat wil gezegd, de cmdlet kan backslashes (\
) interpreteren als escapetekens in de tekenreeksgegevens met behulp van de Regex.Unescape Method, in plaats van het PowerShell-backtickteken (`
) dat normaal gesproken het einde van een regel in een script aangeeft.
Binnen een here-string functioneert de backtick niet. U kunt ook een letterlijke backslash in uw resultaten behouden door ervoor een backslash te plaatsen, zoals deze: \\
. Niet-ontsnapte backslashes, zoals die vaak worden gebruikt in bestandspaden, kunnen als ongeldige escapereeksen in uw resultaten verschijnen.
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 met enkel aanhalingsteken omgeven tekenreeks 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 doesn't exist.
'@
ConvertFrom-StringData -StringData $Here
Name Value
---- -----
Msg3 The specified variable doesn't 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 hash-teken (#
) moet het eerste niet-witruimteteken op de regel zijn.
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 newlineteken (`n
) van PowerShell om de paren te scheiden.
Voorbeeld 5: Gebruiken in de sectie 'gegevens' 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: Gebruik de pipeline-operator om een string door te geven
In dit voorbeeld ziet u dat u een pijplijnoperator (|
) kunt gebruiken om een tekenreeks naar ConvertFrom-StringData
te verzenden. De waarde van de variabele $Here
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 doesn't exist.
'@
$Hash = $Here | ConvertFrom-StringData
$Hash
Name Value
---- -----
Msg3 The specified variable doesn't exist.
Msg2 Credentials are required for this command.
Msg1 The string parameter is required.
Voorbeeld 7: Escape-tekens gebruiken om nieuwe regels en returntekens toe te voegen
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 blok tekst 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
Didn't 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 waarde gegevens in de tekenreeks die wordt geconverteerd.
Het standaardscheidingsteken is het gelijkteken (=
). Deze parameter is toegevoegd in PowerShell 7.
Type: | Char |
Position: | 1 |
Default value: | '=' |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-StringData
Geeft de tekenreeks die moet worden geconverteerd aan. U kunt deze parameter gebruiken of een tekenreeks doorsluizen 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 de paren moeten worden gescheiden door regeleindetekens (`n
).
U kunt opmerkingen opnemen in de tekst, maar de opmerkingen kunnen niet op dezelfde regel staan als een sleutel-waardepaar.
ConvertFrom-StringData
negeert opmerkingen met één regel. Het hashteken (#
) moet het eerste niet-witruimteteken op de regel zijn. Alle tekens op de regel na het hash-teken (#
) worden genegeerd. De opmerkingen worden niet opgenomen in de hash-tabel.
Een here-string is een tekenreeks die uit een of meer regels bestaat. Aanhalingstekens binnen de hier-tekenreeks worden letterlijk geïnterpreteerd als onderdeel van de tekenreeksgegevens. Zie about_Quoting_Rulesvoor meer informatie.
Type: | String |
Position: | 0 |
Default value: | None |
Vereist: | True |
Pijplijninvoer accepteren: | True |
Jokertekens accepteren: | False |
Invoerwaarden
U kunt een tekenreeks met een sleutel-waardepaar doorsluisen naar deze cmdlet.
Uitvoerwaarden
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.