Udostępnij za pośrednictwem


ConvertFrom-StringData

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

Składnia

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 tego ciągu 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 ujętym w pojedyncze cudzysłowy 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 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.

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 niebiałym znakiem w wierszu.

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 w sekcji "DATA" skryptu

W tym przykładzie pokazano polecenie ConvertFrom-StringData 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 DATA.

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

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 ucieczki \n służy do tworzenia nowych wierszy w bloku tekstu skojarzonego 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
        Didn't 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.

Typ:Char
Position:1
Domyślna wartość:'='
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych: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).

Komentarze można uwzględnić w ciągu, ale komentarze nie mogą znajdować się w tym samym wierszu co para klucz-wartość. ConvertFrom-StringData ignoruje komentarze jednowierszowe. Znak hash (#) musi być pierwszym znakiem nie będącym spacją w wierszu. Wszystkie znaki w wierszu po znaku krzyżyka (#) 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.

Typ:String
Position:0
Domyślna wartość:None
Wymagane:True
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:False

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.