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
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-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 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: | '=' |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | 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 |
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.