Udostępnij za pomocą


ConvertFrom-StringData

Konwertuje ciąg zawierający co najmniej jedną parę klucz i wartość na tabelę skrótów.

Składnia

All

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

Opis

Polecenie cmdlet ConvertFrom-StringData konwertuje ciąg zawierający co najmniej jedną parę klucz i wartość na tabelę skrótów. Ponieważ każda para klucz-wartość musi znajdować się w osobnym wierszu, te ciągi są często używane jako format wejściowy. Domyślnie klucz musi być oddzielony od wartości znakiem równości ().

Polecenie cmdlet ConvertFrom-StringData jest uważane za bezpieczne polecenie cmdlet, które może być używane w sekcji DATA skryptu lub funkcji. W przypadku użycia w sekcji DATA zawartość ciągu musi być zgodna z regułami sekcji DATA. Aby uzyskać więcej informacji, zobacz about_Data_Sections.

ConvertFrom-StringData obsługuje sekwencje znaków ucieczki, które są dozwolone przez konwencjonalne narzędzia tłumaczenia maszynowego. Oznacza to, że polecenie cmdlet może interpretować ukośniki odwrotne (\) jako znaki ucieczki w danych ciągu przy użyciu metody Regex.Unescape, zamiast znaku backtick programu PowerShell (`), który normalnie sygnalizuje koniec wiersza w skrypce. Wewnątrz ciągu tutaj znak backtick nie działa. Możesz również zachować dosłowny ukośnik odwrotny w wynikach, poprzedzając go ukośnikiem odwrotnym, w następujący sposób: \\. Nieescape'owane ukośniki, takie jak te często używane w ścieżkach plików, mogą być interpretowane jako niedozwolone sekwencje ucieczki w wynikach.

Program PowerShell 7 dodaje parametr ogranicznika .

Przykłady

Przykład 1: Przekonwertuj pojedynczy 'here-string' na tablicę mieszającą

Ten przykład konwertuje jednocytowy ciąg komunikatów użytkownika na tabelę skrótów. W ciągu jednocygowym wartości nie są zastępowane zmiennymi, a wyrażenia nie są obliczane. Polecenie cmdlet ConvertFrom-StringData konwertuje wartość w zmiennej $Here na tabelę skrótów.

$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.

Przykład 2. Konwertowanie danych ciągów przy użyciu innego ogranicznika

W tym przykładzie pokazano, jak przekonwertować dane ciągu, które używają innego znaku jako ogranicznika. W tym przykładzie dane ciągu używają znaku pionowej kreski (|) jako ogranicznika.

$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

Przykład 3. Konwertowanie tutaj-ciągu zawierającego komentarz

W tym przykładzie konwertuje się here-string zawierający komentarz i wiele par klucz-wartość na tablicę haszującą.

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

# Category is optional.

Category = Storage
Cost = Free
'@
Name                           Value
----                           -----
Cost                           Free
Category                       Storage
Name                           Disks.ps1

Wartość parametru StringData jest here-stringiem, a nie zmienną zawierającą here-string. Dowolny format jest prawidłowy. Ten ciąg zawiera komentarz dotyczący jednego z ciągów. ConvertFrom-StringData Ignoruje komentarze jednowierszowe, ale # znak musi być pierwszym znakiem innym niż biały znak w wierszu. Wszystkie znaki w wierszu po tym # są ignorowane.

Przykład 4. Konwertowanie ciągu na tabelę skrótów

W tym przykładzie zwykły ciąg znaków ujęty w podwójne cudzysłowy (a nie ciąg typu here-string) jest konwertowany na tabelę skrótów i zapisywany w zmiennej $A.

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

Aby spełnić warunek, że każda para klucz-wartość musi znajdować się w osobnym wierszu, ciąg używa znaku nowego wiersza programu PowerShell (`n), aby oddzielić pary.

Przykład 5. Użycie ConvertFrom-StringData w sekcji DATA skryptu

W tym przykładzie przedstawiono ConvertFrom-StringData polecenie używane w sekcji DATA skryptu. Instrukcje poniżej sekcji DATA wyświetlają tekst użytkownikowi.

$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.

Ponieważ tekst zawiera nazwy zmiennych, musi być ujęty w ciąg znaków w pojedynczym cudzysłowie, aby zmienne zostały interpretowane dosłownie i nie zostały rozwinięte. Zmienne nie są dozwolone w sekcji DANE .

Przykład 6. Użyj operatora potoku, aby przekazać ciąg

W tym przykładzie pokazano, że możesz użyć operatora potoku (|) do wysłania ciągu do ConvertFrom-StringData. Wartość zmiennej $Here jest przekazywana do ConvertFrom-StringData, a wynik jest zapisywany w zmiennej $Hash.

$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.

Przykład 7. Używanie znaków ucieczki w celu dodania nowych wierszy i znaków zwracanych

W tym przykładzie pokazano użycie znaków ucieczki do tworzenia nowych wierszy i zwracania znaków w danych źródłowych. Sekwencja \n ucieczki służy do tworzenia nowych wierszy w bloku tekstu, który jest skojarzony z nazwą lub elementem w wynikowej tabeli skrótów.

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.

Przykład 8. Użyj znaku ucieczki ukośnika odwrotnego, aby poprawnie renderować ścieżkę pliku

W tym przykładzie pokazano, jak używać znaku ucieczki ukośnika odwrotnego w danych ciągu, aby umożliwić poprawne renderowanie ścieżki pliku w wynikowej tabeli skrótów ConvertFrom-StringData. Podwójny ukośnik odwrotny gwarantuje, że dosłowne znaki ukośnika odwrotnego są poprawnie renderowane w danych wyjściowych tabeli skrótów.

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

Parametry

-Delimiter

Znak używany do oddzielenia klucza od wartości danych w ciągu, który jest konwertowany. Domyślny ogranicznik to znak równości (=). Ten parametr został dodany w programie PowerShell 7.

Właściwości parametru

Typ:Char
Domyślna wartość:=
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

(All)
Position:1
Obowiązkowe:False
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

-StringData

Określa ciąg, który ma zostać przekonwertowany. Można użyć tego parametru lub przesłać ciąg do ConvertFrom-StringData. Nazwa parametru jest opcjonalna.

Wartość tego parametru musi być ciągiem, który zawiera co najmniej jedną parę klucz-wartość. Każda para klucz-wartość musi znajdować się w osobnym wierszu lub każda para musi być oddzielona znakami nowego wiersza (`n).

W ciągu można uwzględnić komentarze, ale komentarze nie mogą znajdować się w tym samym wierszu co para klucz-wartość. ConvertFrom-StringData ignoruje komentarze jednowierszowe. Znak # musi być pierwszym znakiem innym niż biały znak w wierszu. Wszystkie znaki w wierszu po tym # są ignorowane. Komentarze nie są uwzględniane w tabeli skrótów.

Here-string to ciąg znaków składający się z jednej lub więcej linii. Znaki cudzysłowu w ciągu typu here-string są interpretowane dosłownie jako część danych ciągu. Aby uzyskać więcej informacji, zobacz about_Quoting_Rules.

Właściwości parametru

Typ:String
Domyślna wartość:None
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

(All)
Position:0
Obowiązkowe:True
Wartość z potoku:True
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

CommonParameters

To polecenie cmdlet obsługuje typowe parametry: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction i -WarningVariable. Aby uzyskać więcej informacji, zobacz about_CommonParameters.

Dane wejściowe

String

Do tego polecenia cmdlet można przesłać ciąg z parą klucz-wartość.

Dane wyjściowe

Hashtable

To polecenie cmdlet zwraca tabelę skrótów tworzoną na podstawie par klucz-wartość.

Uwagi

Ciąg here-string to ciąg znaków składający się z jednej lub więcej linii, w których znaki cudzysłowu są interpretowane dosłownie.

To polecenie cmdlet może być przydatne w skryptach, które wyświetlają komunikaty użytkowników w wielu językach mówionych. Tabele skrótów w stylu słownika umożliwiają odizolowanie ciągów tekstowych od kodu, takiego jak pliki zasobów, oraz formatowanie ciągów tekstowych do użycia w narzędziach tłumaczenia.