ConvertFrom-StringData
Преобразует строку, содержащую одну или несколько пар ключей и значений в хэш-таблицу.
Синтаксис
ConvertFrom-StringData
[-StringData] <String>
[<CommonParameters>]
Описание
Командлет ConvertFrom-StringData
преобразует строку, содержащую одну или несколько пар ключей и значений в хэш-таблицу. Так как каждая пара "ключ-значение" должна находиться в отдельной строке, строки здесь часто используются в качестве входного формата. По умолчанию ключ должен быть отделен от значения символом равенства (=
).
Командлет ConvertFrom-StringData
считается безопасным командлетом, который можно использовать в разделе data
скрипта или функции. При использовании в разделе data
содержимое строки должно соответствовать правилам для раздела data
. Дополнительные сведения см. в разделе about_Data_Sections.
ConvertFrom-StringData
поддерживает управляющие последовательности символов, разрешенные стандартными средствами машинного перевода. То есть командлет может интерпретировать обратные очки (\
) в виде escape-символов в строковых данных с помощью метода Regex.Unescape метод, а не символа обратного ввода PowerShell (`
), который обычно сигнализирует о конце строки в скрипте.
Внутри строки здесь не работает символ backtick. Вы также можете сохранить литеральную обратную косую черту в результатах, экранируя его с предыдущей обратной косой чертой, как показано ниже: \\
. Нераскрытые символы обратной косой черты, такие как те, которые часто используются в пути к файлам, могут отображаться как недопустимые escape-последовательности в результатах.
Примеры
Пример 1. Преобразование строки, заданной в одинарных кавычках, в хэш-таблицу
В этом примере строка здесь-документа с одинарными кавычками преобразуется в хэш-таблицу сообщений пользователей. В строке в одиночных кавычках значения не подставляются вместо переменных, а выражения не вычисляются.
Командлет ConvertFrom-StringData
преобразует значение переменной $Here
в хэш-таблицу.
$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.
Пример 2. Преобразование строки здесь, содержащей комментарий
В этом примере преобразуется строка здесь, содержащая комментарий и несколько пар "ключ-значение" в хэш-таблицу.
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-строку. Любой формат является допустимым. Строка здесь содержит комментарий о одной из строк.
ConvertFrom-StringData
пропускает однострочные комментарии, но хэш-символ (#
) должен быть первым символом без пробелов в строке.
Пример 3. Преобразование строки в хэш-таблицу
Этот пример преобразует обычную строку в двойных кавычках (не строку типа here-string) в хэш-таблицу и сохраняет ее в переменной $A
.
$A = ConvertFrom-StringData -StringData "Top = Red `n Bottom = Blue"
$A
Name Value
---- -----
Bottom Blue
Top Red
Чтобы выполнить условие, при котором каждая пара ключ-значение должна находиться в отдельной строке, строка использует символ новой строки PowerShell (`n
) для разделения пар.
Пример 4. Использование в разделе "данные" скрипта
В этом примере показана команда 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 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.
Пример 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
Didn't go forth of us, 'twere all alike
As if we had them not.
Пример 7. Использование экранирующего символа обратной косой черты для правильного отображения пути к файлу
В этом примере показано, как использовать 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
пропускает однострочные комментарии. Хэш-символ (#
) должен быть первым символом без пробелов в строке. Все символы в строке после хэш-символа (#
) игнорируются. Комментарии не включены в хэш-таблицу.
Строка здесь — это строка, состоящая из одной или нескольких строк. Кавычки в строке здесь интерпретируются буквально как часть строковых данных. Дополнительные сведения см. в about_Quoting_Rules.
Тип: | String |
Position: | 0 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
Входные данные
Строку, содержащую пару "ключ-значение", можно передать в этот командлет.
Выходные данные
Этот командлет возвращает хэш-таблицу, созданную из пар "ключ-значение".
Примечания
Строка здесь — это строка, состоящая из одной или нескольких строк, в которых кавычки интерпретируются буквально.
Этот командлет может быть полезен в сценариях, отображающих пользовательские сообщения на нескольких языках. Хэш-таблицы в стиле словаря можно использовать для изоляции текстовых строк от кода, таких как в файлах ресурсов, и форматирования текстовых строк для использования в средствах перевода.
PowerShell