ConvertFrom-StringData
Преобразует строку, содержащую одну или несколько пар типа ключ-значение в хэш-таблицу.
Синтаксис
ConvertFrom-StringData [-StringData] <string> [<CommonParameters>]
Описание
Командлет ConvertFrom-StringData преобразует строку, содержащую одну или несколько пар ключ-значение в хэш-таблицу. Поскольку каждая пара ключ-значение должна располагаться в отдельной строке, в качестве формата ввода часто используются автономные строки.
Командлет ConvertFrom-StringData считается безопасным командлетом, который можно использовать в разделе DATA скрипта или функции. При использовании в разделе DATA содержимое строки должно соответствовать правилам раздела DATA. Дополнительные сведения см. в разделе about_Data_Sections.
Параметры
-StringData <string>
Задает строку, подлежащую преобразованию. Можно использовать этот параметр или передавать строку командлету ConvertFrom-StringData с помощью конвейера. Имя параметра указывать необязательно.
Значением этого параметра должна быть строка, заключенная в одиночные кавычки, или строка, заключенная в двойные кавычки, или автономная строка, содержащая одну или несколько пар ключ-значение. Каждая пара ключ-значение должна быть расположена на отдельной строке или отделена знаком новой строки (`n).
В строку можно включать комментарии, но они не должны находиться на одной строке с парой ключ-значение. Комментарии не включаются в хэш-таблицу.
Автономная строка — это строка, содержащая одну или несколько строк с кавычками, которые интерпретируются посимвольно. Дополнительные сведения см. в разделе about_Quoting_Rules.
Обязательно? |
true |
Позиция? |
1 |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
true (ByValue) |
Принимать подстановочные знаки? |
false |
<CommonParameters>
Данный командлет поддерживает общие параметры -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer и -OutVariable. Дополнительные сведения см. в разделе about_Commonparameters.
Ввод и вывод
Входным типом является тип объектов, которые можно передавать командлету по конвейеру. Возвращаемым типом является тип объектов, возвращаемых командлетом.
Входные данные |
System.String Можно передать строку, содержащую пару ключ-значение, командлету ConvertFrom-StringData по конвейеру. |
Выходные данные |
System.Collections.Hashtable Командлет ConvertFrom-StringData возвращает хэш-таблицу, созданную из пар ключ-значение. |
Примечания
Автономная строка — это строка, содержащая одну или несколько строк с кавычками, которые интерпретируются посимвольно. Дополнительные сведения см. в разделе about_Quoting_Rules.
Командлет ConvertFrom-StringData может оказаться полезным в скриптах, предполагающих отображение сообщений пользователей на нескольких языках. Хэш-таблицы, напоминающие словари, позволяют изолировать текстовые строки от кода, например в файлах ресурсов, и форматировать текстовые строки для использования в средствах перевода.
Пример 1
C:\PS>$here = @'
Msg1 = The string parameter is required.
Msg2 = Credentials are required for this command.
Msg3 = The specified variable does not exist.
'@
C:\PS> 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.
Описание
-----------
Эти команды преобразуют автономные строки с сообщениями в одиночных кавычках в хэш-таблицу. В строках с одиночными кавычками значения переменных не подставляются и выражения не вычисляются.
Первая команда создает автономную строку и сохраняет ее в переменной $here.
Вторая команда использует командлет ConvertFrom-StringData, чтобы преобразовать автономную строку из переменной $here в хэш-таблицу.
Пример 2
C:\PS>$p = @"
ISE = Windows PowerShell Integrated Scripting Environment
"@
C:\PS> $p | get-member
TypeName: System.String
Name MemberType Definition
---- ---------- ----------
Clone Method System.Object Clone()
...
C:\PS> $hash = convertfrom-stringdata -stringdata $p
C:\PS> $hash | get-member
TypeName: System.Collections.Hashtable
Name MemberType Definition
---- ---------- ----------
Add Method System.Void Add(Object key, Object
...
Описание
-----------
Эта команда показывает, что командлет ConvertFrom-StringData преобразовывает автономную строку в хэш-таблицу.
Первая команда создает заключенную в двойные кавычки автономную строку, содержащую одну пару ключ-значение, и сохраняет ее в переменной $p.
Вторая команда с помощью оператора конвейера (|) передает переменную $p командлету Get-Member. Результат показывает, что переменная $p является строкой (System.String).
Третья команда использует командлет ConvertFrom-StringData, чтобы преобразовать автономную строку в переменной $p в хэш-таблицу. Эта команда сохраняет результат в переменной $hash.
Последняя команда с помощью оператора конвейера (|) передает переменную $hash командлету Get-Member. Результат показывает, что содержимое переменной $hash является хэш-таблицей (System.Collections.Hashtable).
Пример 3
C:\PS>convertfrom-stringdata -stringdata @'
Name = Disks.ps1
# Category is optional.
Category = Storage
Cost = Free
'@
Name Value
---- -----
Cost Free
Category Storage
Name Disks.ps1
Описание
-----------
Эта команда преобразует автономную строку с одиночными кавычками, содержащую несколько пар ключ-значение, в хэш-таблицу.
В этой команде значением параметра StringData является автономная строка, а не переменная, содержащая автономную строку. Допустимы оба формата.
Автономная строка содержит примечание об одной из строк. В строках можно использовать примечания, при условии что они не расположены на одной строке с парой ключ-значение.
Пример 4
C:\PS>$a = convertfrom-stringdata -stringdata "Top = Red `n Bottom = Blue"
C:\PS> "Top = " + $a.Top
Top = Red
C:\PS> "Bottom = " + $a.Bottom
Bottom = Blue
Описание
-----------
В этом примере обычная заключенная в двойные кавычки строка (не автономная строка) преобразуется в хэш-таблицу и сохраняется в переменной $a.
Чтобы выполнить требование о необходимости размещения каждой пары ключ-значение на отдельной строке, в нем для разделения пар используется знак новой строки Windows PowerShell (`n).
Результатом является хэш-таблица входных строк. Оставшиеся команды служат для вывода результата.
Пример 5
C:\PS>$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.
'@
}
C:\PS> $TextMsgs.Text001
The $Notebook variable contains the name of the user's system notebook.
C:\PS> $TextMsgs.Text002
The $MyNotebook variable contains the name of the user's private notebook.
Описание
-----------
В этом примере показано использование команды ConvertFrom-StringData в разделе DATA скрипта. Инструкции, расположенные ниже раздела DATA, служат для отображения текста для пользователя.
Поскольку текст содержит имена переменных, его необходимо заключить в одиночные кавычки, чтобы переменные интерпретировались как текст, и вместо них не подставлялись значения. Использовать переменные в разделе DATA запрещается.
Пример 6
C:\PS>$here = @'
Msg1 = The string parameter is required.
Msg2 = Credentials are required for this command.
Msg3 = The specified variable does not exist.
'@
C:\PS> $hash = $here | convertfrom-stringdata
C:\PS> $hash
Name Value
---- -----
Msg3 The specified variable does not exist.
Msg2 Credentials are required for this command.
Msg1 The string parameter is required.
Описание
-----------
В этом примере показано, что для передачи строки командлету ConvertFrom-StringData можно использовать оператор конвейера (|).
Первая команда сохраняет автономную строку в переменной $here. Вторая команда с помощью оператора конвейера (|) передает переменную $here командлету ConvertFrom-StringData. Эта команда сохраняет результат в переменной $hash.
Последняя команда отображает значение переменной $hash.
См. также
Концепции
about_Data_Sections
about_Quoting_Rules
about_Script_Internationalization