В прошлых статьях я рассказал как можно одной командой вывести значения, которые содержатся на разных уровнях вложенности. Например значения из Сonfig.tools и .Guest вывода командлета Get-View -ViewType VirtualMachine. Несомненно это очень удобно - вместо последовательного выполнения этих командлетов и выискивания глазами интересующих нас полей мы получаем все в одном месте, и при этом не видим ничего лишнего.
Также я привел вывод команд
Обратив внимание на более компактный вид команды $VM.Summary.Guest.
И вот на следующем этапе нам, вероятно, захочется вывести значения не по двум, а скажем по шести полям. И поскольку мы понимаем, что вывод будет весьма громоздким, мы зададимся вопросом: А можно ли создать свой собственный Summary, или даже множество различных вариантов Summary из интересующих нас значений, и так же аккуратно вывести его в один столбец?
Оказывается можно! И этот инструмент называется хеш таблицы.
Хеш таблицы (hash tables).
- это специальная структура данных для хранения пар ключей и их значений.
Для ее создания достаточно ввести $VM_Prop = @{}. Все, мы создали новый объект - пустую хеш таблицу.
Выполнив
мы получим доступ к элементу $VM.Name, что и будет нашим самым первым значением. А ключом назначим VmName.
Выполним
Теперь наша таблица не пустая!
Прежде чем перейти к тому, ради чего собственно мы и обратились к хеш таблицам, еще немного теории.
Наша переменная $VM_Prop содержит объект: хеш таблицу.
И мы может посмотреть элементы этого объекта, выполнив
Вывод содержит методы (что можно сделать) и свойства.
На данный момент нас интересуют только свойства
Извлечем свойства Values и Keys
В приведенном скриншоте видим ранее введенные нами значения.
Также видно, что мы действительно создали объект Hashtable
Теперь перейдем к практическому использованию технологии, с которой мы только что ознакомились.
Будем использовать следующий вид записи нашего объекта:
Создав хеш таблицу и заполнив ее, выведем ее значения:
Теперь порядок вывода полностью соответствует порядку ввода.
Когда мы рассматривали вопрос использования Хеш таблицы для создания своего собственного компактного вывода нужных нам элементов, мы использовали ключ MemberType Properties в команде Get-Member для вывода только свойств.
Но поняв, что из себя представляет хеш таблица, мы догадываемся что только красивым и компактным выводом ее использование не ограничивается.
Наберем команду без ключей
Мы видим список доступных методов. Их рассмотрение выходит за пределы данной статьи, однако для демонстрации их возможностей вполне можно ограничиться одним. Например методом Remove.
Выведем исходную таблицу, а затем подредактируем ее с помощью Remove.
Как видно из данного примера созданный нами объект можно легко модернизировать.
Также я привел вывод команд
Обратив внимание на более компактный вид команды $VM.Summary.Guest.
И вот на следующем этапе нам, вероятно, захочется вывести значения не по двум, а скажем по шести полям. И поскольку мы понимаем, что вывод будет весьма громоздким, мы зададимся вопросом: А можно ли создать свой собственный Summary, или даже множество различных вариантов Summary из интересующих нас значений, и так же аккуратно вывести его в один столбец?
Оказывается можно! И этот инструмент называется хеш таблицы.
Хеш таблицы (hash tables).
- это специальная структура данных для хранения пар ключей и их значений.
Для ее создания достаточно ввести $VM_Prop = @{}. Все, мы создали новый объект - пустую хеш таблицу.
Выполнив
мы получим доступ к элементу $VM.Name, что и будет нашим самым первым значением. А ключом назначим VmName.
Выполним
Теперь наша таблица не пустая!
Прежде чем перейти к тому, ради чего собственно мы и обратились к хеш таблицам, еще немного теории.
Наша переменная $VM_Prop содержит объект: хеш таблицу.
И мы может посмотреть элементы этого объекта, выполнив
Вывод содержит методы (что можно сделать) и свойства.
На данный момент нас интересуют только свойства
Извлечем свойства Values и Keys
В приведенном скриншоте видим ранее введенные нами значения.
Также видно, что мы действительно создали объект Hashtable
Теперь перейдем к практическому использованию технологии, с которой мы только что ознакомились.
Будем использовать следующий вид записи нашего объекта:
Создав хеш таблицу и заполнив ее, выведем ее значения:
Обратим внимание на порядок вывода полей, - он не соответствует тому, как мы определили в таблице.
Это решается использованием свойством [ordered]
Теперь порядок вывода полностью соответствует порядку ввода.
Когда мы рассматривали вопрос использования Хеш таблицы для создания своего собственного компактного вывода нужных нам элементов, мы использовали ключ MemberType Properties в команде Get-Member для вывода только свойств.
Но поняв, что из себя представляет хеш таблица, мы догадываемся что только красивым и компактным выводом ее использование не ограничивается.
Наберем команду без ключей
Мы видим список доступных методов. Их рассмотрение выходит за пределы данной статьи, однако для демонстрации их возможностей вполне можно ограничиться одним. Например методом Remove.
Выведем исходную таблицу, а затем подредактируем ее с помощью Remove.
Как видно из данного примера созданный нами объект можно легко модернизировать.
Комментариев нет:
Отправить комментарий