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




Содержание