Преобразует строку, содержащую одну или несколько пар типа ключ-значение в хэш-таблицу.
Синтаксис
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.
См. также