РАЗДЕЛ
about_Hash_Tables
КРАТКОЕ ОПИСАНИЕ
Описывает, как создавать, использовать и сортировать хэш-таблицы
в Windows PowerShell.
ПОЛНОЕ ОПИСАНИЕ
Хэш-таблица, также называемая словарем или массивом ассоциативных
элементов, представляет собой компактную структуру данных, в которой
хранится одна или несколько пар "имя-значение". Например, хэш-таблица
может содержать набор имен и идентификаторов сотрудников, имен
компьютеров и IP-адресов или идентификаторов сообщений и текстов
сообщений.
Хэш-таблицы используются довольно часто, потому что они позволяют
эффективно находить и извлекать данные. В Windows PowerShell с
помощью хэш-таблиц можно хранить списки или создавать вычисляемые
свойства. Кроме того, в Windows PowerShell имеется командлет
ConvertFrom-StringData, который преобразует строки в хэш-таблицу.
Создание хэш-таблиц
Элементы в хэш-таблице организуются в пары "имя-значение", например:
Msg1="Please enter your password."
Msg2="The path parameter is required."
Msg3="The alias of Get-Command is gcm."
Значения сопоставляются или ассоциируются с именами, поэтому в
ответ на имя среда Windows PowerShell возвращает значение.
В Windows PowerShell синтаксис хэш-таблиц имеет следующий вид:
@{ <имя> = <значение>; [<имя> = <значение> ] ...}
При создании хэш-таблицы необходимо соблюдать следующие правила:
- начинайте хэш-таблицу со знака "@";
- заключайте хэш-таблицу в фигурные скобки ({});
- в качестве содержимого хэш-таблицы вводите одну или более
пар "имя-значение";
- используйте знак "равно" (=), чтобы отделять имена от
значений;
- чтобы разделять пары "имя-значение", используйте точку с
запятой (;);
- если имя или значение содержит пробелы, заключите его в
кавычки.
Например, хэш-таблица для приведенных выше сообщений выглядит
следующим образом:
@{
Msg1="Please enter your password.";
Msg2="The path parameter is required.";
Msg3="The alias of Get-Command is gcm."; }
Чтобы хэш-таблицу можно было использовать в скриптах и
командах, сохраните ее в переменной. Значением переменной
является объект хэш-таблицы (System.Collections.Hashtable), а
имена каждой из пар "имя-значение" являются свойствами объекта хэш-
таблицы.
Следующие команды сохраняют хэш-таблицу сообщений пользователя в
переменной $a, а для отображения значений в них используется
обращение через точку.
C:\PS> $a = @{
>> Msg1="Please enter your password.";
>> Msg2="The path parameter is required.";
>> Msg3="The alias of Get-Command is gcm.";
>> }
C:\PS> $a
Name Value
---- -----
Msg1 Please enter your password.
Msg3 The alias of Get-Command is gcm.
Msg2 The path parameter is required.
C:\PS> $a.Msg1
Please enter your password.
Хэш-таблицы не ограничиваются одним типом данных. В хэш-таблицу
можно вводить данные любого типа, а в одной хэш-таблице можно
объединять данные различных типов. Например, можно создать
хэш-таблицу, которая содержит целое число, вызов командлета и
строку.
Сортировка хэш-таблиц
Для сортировки хэш-таблицы по алфавиту по ключам или по значениям,
используется метод хэш-таблиц GetEnumerator, которые получает ключи и
значения хэш-таблицы, после чего они сортируются с помощью командлета Sort-Object.
Например, следующая команда сортирует хэш-таблицу в переменной $a по
алфавиту по ключам.
C:\PS> $a.getenumerator() | sort-object -property key
Name Value
---- -----
Msg1 Please enter your password.
Msg2 The path parameter is required.
Msg3 The alias of Get-Command is gcm.
Следующая команда с помощью того же метода сортирует значения
хэш-таблицы по убыванию.
C:\PS> $a.getenumerator() | sort-object -property value
-descending
Name Value
---- -----
Msg2 The path parameter is required.
Msg3 The alias of Get-Command is gcm.
Msg1 Please enter your password.
ConvertFrom-StringData
Командлет ConvertFrom-StringData преобразует строку или
автономную строку, содержащую пары "имя-значение", в
хэш-таблицу. Командлет ConvertFrom-StringData можно безопасно
использовать в разделе Data скрипта, либо его можно использовать с
командлетом Import-LocalizedData, чтобы отображать сообщения с
помощью культуры пользовательского интерфейса текущего пользователя.
Автономные строки особенно удобно использовать в случаях, когда
значения в хэш-таблице включают кавычки. (Дополнительные сведения об
автономных строках см. в разделе about_Quoting_Rules.)
В следующем примере показано, как создать автономную строку из
пользовательских сообщений из предыдущего примера и с помощью командлета
ConvertFrom-StringData преобразовать эту строку в хэш-таблицу.
Следующая команда создает автономную строку из пар
"имя-значение", а затем сохраняет ее в переменной $string.
C:\PS> $string = @"
Msg1="Please enter your password."
Msg2="The path parameter is required."
Msg3="The alias of Get-Command is gcm."
"@
Эта команда с помощью командлета ConvertFrom-StringData преобразует
автономную строку в хэш-таблицу.
C:\PS> convertfrom-stringdata $string
Name Value
---- -----
Msg3 "The alias of Get-Command is gcm."
Msg2 "The path parameter is required."
Msg1 "Please enter your password."
СМ. ТАКЖЕ
about_Arrays
about_Quoting_Rules
about_Script_Internationalization
ConvertFrom-StringData
Import-LocalizedData