Методы переменной $Host. Часть 1.

На самом деле, технически правильнее было бы назвать статью — «Методы объекта System.Management.Automation.Internal.Host.InternalHost, содержащегося в автоматической переменной $Host», но в этом случае название получилось бы более громоздким и менее понятным, так что оставим его как оно есть.

Другие статьи серии:
Методы переменной $Host. Часть 2.
Методы переменной $Host. Часть 3.

Автоматическая переменная $host содержит в себе объект типа System.Management.Automation.Internal.Host.InternalHost, представляющий текущее приложение Windows PowerShell.

00

Этот объект обладает некоторыми свойствами, например:

$Host.Name – имя приложения, ConsoleHost – для консоли Windows PowerShell, Windows PowerShell ISE Host – для ISE

$Host.Version – версия Windows PowerShell

$Host.CurrentCulture – текущие языковые настройки

$Host.CurrentUICulture – языковые параметры интерфейса

$Host.PrivateData — набор цветовых настроек, применяемых при отображении различных сообщений, таких как сообщения об ошибках — Error, отладочные сообщения – Debug, или отображение прогресса выполнения какой-либо задачи – Progress.

$Host.UI.RawUI – набор настроек окна консоли, таких как цвет консоли и текста, размер и положение окна консоли, а также заголовок окна.

Многие из этих свойств можно изменить.

Допустим, чтобы изменить заголовок окна консоли Windows PowerShell, нужно задать новое значение свойству $Host.UI.RawUI.WindowTitle.

02

Кроме свойств, объект обладает набором методов. Мы рассмотрим работу некоторых из них.

Вторая часть, где рассматривается метод PromptForChoice находится здесь.

$Host.UI.Prompt

Этот метод позволяет нам запросить необходимую информацию у пользователя и представляет ее в виде объекта Dictionary: System.Collections.Generic.Dictionary.

03

Как мы видим из скриншота, метод требует следующие параметры: строку заголовка – caption, строку сообщения – message, и коллекцию объектов типа System.Management.Automation.Host.FieldDescription.

Создадим объект коллекции и сохраним его в переменной $FieldDescriptionCollection. Обратите внимание, что вся команда — это одна строка.

$FieldDescriptionCollection = New-Object -TypeName System.Collections.ObjectModel.Collection[System.Management.Automation.Host.FieldDescription]

04

Запросив значение переменной $FieldDescriptionCollection, мы видим, что коллекция пока пустая.

05

Воспользовавшись командлетом Get-Member, мы узнаем, какими свойствами и методами обладает объект коллекции.

Get-Member -InputObject $FieldDescriptionCollection

06

Почему мы воспользовались этой формой командлета Get-Member, а не передали переменную $FieldDescriptionCollection по конвейеру, например, так: $FieldDescriptionCollection | Get-Member.

Потому что в этом случае командлет Get-Member показал бы нам свойства и методы объектов, входящих в эту коллекцию, а не самого объекта коллекции. Кроме того, в нашем случае, так как коллекция еще пустая, эта команда вернула бы нам сообщение об ошибке.

07

В списке доступных методов мы можем заметить метод Add. Он нам и нужен.

08

Как видно из вывода, в качестве параметра метод требует объект типа System.Management.Automation.Host.FieldDescription.

Создадим его при помощи следующей команды.

$FieldDescriptionOne = New-Object -TypeName System.Management.Automation.Host.FieldDescription(«Parameter_1»)

09

Для отображения созданного нами объекта запросим содержимое переменной $FieldDescriptionOne.

10

Создадим еще один объект System.Management.Automation.Host.FieldDescription.

$FieldDescriptionTwo = New-Object -TypeName System.Management.Automation.Host.FieldDescription(«Parameter_2»)

11

12

Добавим созданные нами объекты в коллекцию.

$FieldDescriptionCollection.Add($FieldDescriptionOne)

$FieldDescriptionCollection.Add($FieldDescriptionTwo)

13

Запросив переменную $FieldDescriptionCollection, мы увидим, что она содержит два объекта.

14

Теперь мы можем воспользоваться методом $Host.UI.Prompt.

В качестве параметров зададим заголовок окна, текст сообщения и созданную нами коллекцию объектов FieldDescription.

$Host.UI.Prompt(«Enter Data»,»Specify Information:»,$FieldDescriptionCollection)

15

Мы можем сохранить вывод этого метода в переменной для дальнейшего использования.

$PromptResults = $Host.UI.Prompt(«Enter Data»,»Specify Information:»,$FieldDescriptionCollection)

16

Запросив значение переменной $PromptResults мы получим названия параметров и указанные нами значения.

17

Передав содержимое переменной $PromptResults командлету Get-Member, мы получим название типа объекта, возвращаемого методом Prompt — System.Collections.Generic.Dictionary, а также его свойства и методы.

18


Страницы в социальных сетях:

Twitter: https://twitter.com/vsseth
Facebook: https://fb.com/inpowershell
VKontakte: https://vk.com/inpowershell


Реклама

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s