ConvertFrom-StringData

Преобразует строку, содержащую одну или несколько пар типа ключ-значение в хэш-таблицу.

Синтаксис

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

Описание

Командлет ConvertFrom-StringData преобразует строку, содержащую одну или несколько пар "ключ - значение", в хэш-таблицу. Так как каждая пара "ключ-значение" должна находиться в отдельной строке, строки здесь часто используются в качестве формата входных данных. По умолчанию ключ должен быть отделен от значения символом равенства (=).

Командлет ConvertFrom-StringData считается безопасным командлетом, который можно использовать в DATA разделе скрипта или функции. При использовании в DATA разделе содержимое строки должно соответствовать правилам для раздела DATA. Дополнительные сведения см . в разделе about_Data_Sections.

ConvertFrom-StringData поддерживает последовательности escape-символов, разрешенные обычными средствами машинного перевода. То есть командлет может интерпретировать обратную косую черту (\) как escape-символы в строковых данных с помощью метода Regex.Unescape вместо символа обратного выражения PowerShell ('), который обычно сигнализирует о конце строки в скрипте. Внутри строки here символ обратного апострофа не работает. Вы также можете сохранить литеральную обратную косую черту в результатах, экранируя ее с помощью предыдущей обратной косой черты, как показано ниже: \\. Неэкранированные символы обратной косой черты, например часто используемые в путях к файлам, могут при обработке расцениваться как недопустимые escape-символы.

Примеры

Пример 1. Преобразование строки here-string с одной кавычками в хэш-таблицу

В этом примере в хэш-таблицу преобразуется строка из пользовательских сообщений в одной кавычки. В строках с одиночными кавычками значения переменных не подставляются и выражения не вычисляются. Командлет ConvertFrom-StringData преобразует значение в переменной $Here в хэш-таблицу.

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

Пример 2. Преобразование строки here, содержащей комментарий

В этом примере строка here-string, содержащая комментарий и несколько пар "ключ-значение", преобразуется в хэш-таблицу.

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

# Category is optional.

Category = Storage
Cost = Free
'@

Name                           Value
----                           -----
Cost                           Free
Category                       Storage
Name                           Disks.ps1

Значение параметра StringData — это строка here, а не переменная, содержащая строку here-string. Допустимы оба формата. Строка here содержит комментарий об одной из строк. ConvertFrom-StringData Игнорирует однострочные комментарии, но # символ должен быть первым символом, не включающем пробелы, в строке. Все символы в строке после # игнорируются.

Пример 3. Преобразование строки в хэш-таблицу

В этом примере обычная строка с двойными кавычками (не строка здесь) преобразуется в хэш-таблицу и сохраняется в переменной $A .

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

Name             Value
----             -----
Bottom           Blue
Top              Red

Чтобы обеспечить соответствие условию, что каждая пара "ключ-значение" должна находиться в отдельной строке, в строке используется символ новой строки PowerShell ('n) для разделения пар.

Пример 4. Использование ConvertFrom-StringData в разделе DATA скрипта

В этом примере показана команда, используемая ConvertFrom-StringData в разделе DATA скрипта. Инструкции, расположенные ниже раздела DATA, служат для вывода текста для пользователя.

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

Так как текст содержит имена переменных, его необходимо заключить в одиночные кавычки, чтобы переменные интерпретировались как текст и вместо них не подставлялись значения. Переменные запрещены в разделе DATA .

Пример 5. Использование оператора конвейера для передачи строки

В этом примере показано, что оператор конвейера (|) можно использовать для отправки строки в ConvertFrom-StringData. Значение переменной передается в $Here и ConvertFrom-StringData результат в переменной $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.

Пример 6. Использование escape-символов для добавления новых строк и возвращаемых символов

В этом примере показано использование escape-символов для создания новых строк и возврата символов в исходных данных. Escape-последовательность \n используется для создания новых строк в блоке текста, связанном с именем или элементом в результирующей хэш-таблице.

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.

Пример 7. Использование escape-символа обратной косой черты для правильной отрисовки пути к файлу

В этом примере показано, как использовать escape-символ обратной косой черты в строковых данных, чтобы обеспечить правильную отрисовку пути к файлу в результирующей ConvertFrom-StringData хэш-таблице. С помощью двойной обратной косой черты гарантируется правильное представление символов обратной косой черты в выходных данных хэш-таблицы.

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

Name                           Value
----                           -----
Message                        Look in c:\Windows\System32

Параметры

-StringData

Указывает строку, которую нужно преобразовать. Этот параметр можно использовать или передать строку в ConvertFrom-StringData. Имя параметра является необязательным.

Значение этого параметра должно быть строкой, содержащей одну или несколько пар "ключ-значение". Каждая пара "ключ-значение" должна находиться в отдельной строке или каждая пара должна быть разделена символами новой строки ('n).

Вы можете включить комментарии в строку, но комментарии не могут находиться в одной строке с парой "ключ-значение". ConvertFrom-StringData игнорирует однострочные комментарии. Символ # должен быть первым символом, не соответствующим пробелам, в строке. Все символы в строке после # игнорируются. Комментарии не включаются в хэш-таблицу.

Строка здесь — это строка, состоящая из одной или нескольких строк. Кавычки в строке here-string интерпретируются буквально как часть строковых данных. Дополнительные сведения см. в разделе about_Quoting_Rules.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

Входные данные

String

Строку, содержащую пару "ключ-значение", можно передать по конвейеру в ConvertFrom-StringData.

Выходные данные

Hashtable

Этот командлет возвращает хэш-таблицу, созданную из пар "ключ-значение".

Примечания

Строка here — это строка, содержащая одну или несколько строк с кавычками, которые интерпретируются буквально.

Этот командлет может быть полезен в сценариях, отображающих сообщения пользователей на нескольких языках. Хэш-таблицы, напоминающие словари, позволяют изолировать текстовые строки от кода, например в файлах ресурсов, и форматировать текстовые строки для использования в средствах перевода.