ConvertFrom-StringData
Converteert een tekenreeks met een of meer sleutel- en waardeparen naar een hash-tabel.
Syntaxis
ConvertFrom-StringData
[-StringData] <String>
[<CommonParameters>]
Description
De cmdlet ConvertFrom-StringData converteert een tekenreeks met een of meer sleutel- en waardeparen naar een hash-tabel. Omdat elk sleutel-/waardepaar op een afzonderlijke regel moet staan, worden hier-tekenreeksen vaak gebruikt als invoerindeling.
De cmdlet ConvertFrom-StringData 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 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 Windows 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.
Voorbeelden
Voorbeeld 1: Hier een enkele aanhalingstekenreeks converteren naar een hash-tabel
PS C:\> $Here = @'
Msg1 = The string parameter is required.
Msg2 = Credentials are required for this command.
Msg3 = The specified variable does not exist.
'@
PS C:\> 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.
Met deze opdrachten wordt een enkele aanhalingstekenreeks met 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.
Met de eerste opdracht wordt een hier-tekenreeks gemaakt en opgeslagen in de $Here variabele.
De tweede opdracht maakt gebruik van de cmdlet ConvertFrom-StringData om de hier-tekenreeks in de $Here variabele te converteren naar een hash-tabel.
Voorbeeld 2: Een hier aanhalingstekenreeks met dubbele aanhalingstekens converteren naar een hash-tabel
PS C:\> $P = @"
ISE = Windows PowerShell Integrated Scripting Environment
"@
PS C:\> $P | Get-Member
TypeName: System.String
Name MemberType Definition
---- ---------- ----------
Clone Method System.Object Clone()
PS C:\> $Hash = ConvertFrom-StringData -StringData $P
PS C:\> $Hash | Get-Member
TypeName: System.Collections.Hashtable
Name MemberType Definition
---- ---------- ----------
Add Method System.Void Add(Object key, Object
Deze opdrachten laten zien dat ConvertFrom-StringData daadwerkelijk een hier-tekenreeks converteert naar een hash-tabel.
Met de eerste opdracht maakt u een tekenreeks met dubbele aanhalingstekens die één sleutel-waardepaar bevat en opslaat in de $P variabele.
De tweede opdracht maakt gebruik van een pijplijnoperator (|) om de $P variabele naar de Get-Member-cmdlet te verzenden. Het resultaat geeft aan dat $P een tekenreeks (System.String) is.
De derde opdracht maakt gebruik van de cmdlet ConvertFrom-StringData om de hier-tekenreeks in $P te converteren naar een hash-tabel. Met de opdracht wordt het resultaat opgeslagen in de $Hash variabele.
De laatste opdracht maakt gebruik van een pijplijnoperator (|) om de $Hash variabele te verzenden naar de cmdlet Get-Member. Het resultaat laat zien dat de inhoud van de variabele $Hash een hash-tabel is (System.Collections.Hashtable).
Voorbeeld 3: Een hier-tekenreeks converteren naar een hash-tabel
PS C:\> ConvertFrom-StringData -StringData @'
Name = Disks.ps1
# Category is optional.
Category = Storage
Cost = Free
'@
Name Value
---- -----
Cost Free
Category Storage
Name Disks.ps1
Met deze opdracht wordt een enkele aanhalingstekenreeks met meerdere sleutel-/waardeparen geconverteerd naar een hash-tabel.
In deze opdracht is de waarde van de parameter StringData 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. Opmerkingen zijn geldig in tekenreeksen, mits de opmerking zich op een andere regel bevindt dan een sleutel-waardepaar.
Voorbeeld 4: Een tekenreeks converteren naar een hash-tabel
PS C:\> $A = ConvertFrom-StringData -StringData "Top = Red `n Bottom = Blue"
PS C:\> "Top = " + $A.Top
Top = Red PS C:\> "Bottom = " + $A.Bottom
Bottom = Blue
In dit voorbeeld wordt een gewone tekenreeks met dubbele aanhalingstekens (geen hier-tekenreeks) geconverteerd naar een hash-tabel en wordt deze opgeslagen in de $A variabele.
Om te voldoen aan de voorwaarde dat elk sleutel-/waardepaar op een afzonderlijke regel moet staan, wordt het newlineteken ('n) van Windows PowerShell gebruikt om de paren te scheiden.
Het resultaat is een hash-tabel van de invoer. De resterende opdrachten geven de uitvoer weer.
Voorbeeld 5: ConvertFrom-StringData gebruiken in de sectie GEGEVENS van een script
PS C:\> $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.
'@
}
PS C:\> $TextMsgs.Text001
The $Notebook variable contains the name of the user's system notebook. PS C:\> $TextMsgs.Text002
The $MyNotebook variable contains the name of the user's private notebook.
In dit voorbeeld ziet u een opdracht ConvertFrom-StringData die wordt gebruikt in de sectie DATA van een script. In de instructies onder de sectie DATA wordt de tekst voor de gebruiker weergegeven.
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
PS C:\> $Here = @'
Msg1 = The string parameter is required.
Msg2 = Credentials are required for this command.
Msg3 = The specified variable does not exist.
'@
PS C:\> $Hash = $Here | ConvertFrom-StringData
PS C:\> $Hash
Name Value
---- -----
Msg3 The specified variable does not exist.
Msg2 Credentials are required for this command.
Msg1 The string parameter is required.
In dit voorbeeld ziet u dat u een pijplijnoperator (|) kunt gebruiken om een tekenreeks te verzenden naar ConvertFrom-StringData-.
Met de eerste opdracht wordt een hier-tekenreeks opgeslagen in de variabele $Here. De tweede opdracht maakt gebruik van een pijplijnoperator (|) om de variabele $Here te verzenden naar ConvertFrom-StringData-. Met de opdracht wordt het resultaat opgeslagen in de $Hash variabele.
Met de laatste opdracht wordt de inhoud van de variabele $Hash weergegeven.
Voorbeeld 7: Escape-tekens gebruiken om nieuwe regels toe te voegen en tekens te retourneren
PS C:\> 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.
In dit voorbeeld ziet u het gebruik van escapetekens om nieuwe regels te maken en tekens te retourneren in ConvertFrom-StringData. In dit voorbeeld wordt de escapereeks \n gebruikt om nieuwe regels te maken binnen een tekstblok (de waarde, in de resulterende hashtabel) die is gekoppeld aan een naam of item (de naam, in de resulterende hash-tabel).
Voorbeeld 8: Het escapeteken backslash gebruiken om een bestandspad correct weer te geven
PS C:\> ConvertFrom-StringData "Message=Look in c:\\Windows\\System32"
Name Value
---- -----
Message Look in c:\Windows\System32
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.
Parameters
-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 tussen enkele aanhalingstekens staat, een tekenreeks tussen dubbele aanhalingstekens of een hier-tekenreeks die een of meer sleutel-/waardeparen bevat. Elk sleutel-/waardepaar moet zich op een afzonderlijke regel bevinden of elk paar moet worden gescheiden door nieuweregeltekens ('n).
U kunt opmerkingen opnemen in de tekenreeks, maar de opmerkingen kunnen niet op dezelfde regel staan als een sleutel-waardepaar. De opmerkingen zijn niet opgenomen in de hash-tabel.
Een here-string is een tekenreeks die bestaat uit een of meer regels waarin aanhalingstekens letterlijk worden geïnterpreteerd. 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 ConvertFrom-StringData.
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.