РАЗДЕЛ 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