Заметки о Windows и других программных продуктах Microsoft...

Объекты в PowerShell

Объекты в PowerShell

При изучении PowerShell очень важно понять некоторые моменты. Основной из них на мой взгляд — это то, что PowerShell  всегда работает с объектами. Текст, выводимый в консоли — лишь описание этих объектов в удобочитаемой форме. Давайте попробуем разобраться, что же такое объект в PowerShell.

В качестве примера возьмем обыкновенный перочинный нож (pocketknife), и попробуем его описать:

  • Цвет, размер, количество предметов и производитель — вот его свойства. Например, нож красного цвета, весит 55 грамм, имеет 3 лезвия, штопор и отвертку и произведен компанией Victorinox.  Другими словами, свойства объекта описывают, как он внешне выглядит и что из себя представляет.
  • Он может резать, крутить и открывать —  методы. Например, этим ножом  можно нарезать колбасу, открыть бутылку с вином или открутить винт. Методы объекта описывают все то,  что им (или с ним) можно сделать.

А теперь возьмем наш реальный ножик и перенесем его вместе со всеми свойствами и методами в PowerShell. Для этого создадим новый объект:

$pocketknife = New-Object  Object

Зададим его цвет:

Add-Member -memberType NoteProperty -name Color -value Red -inputObject $pocketknife

Для удобства написания названия параметров можно писать в сокращенном виде. Зададим вес объекта:

Add-Member -Me NoteProperty In $pocketknife -Na Weight -Value 55

и производителя

Add-Member -inputObject $pocketknife NoteProperty Manufacturer Victorinox

В большинстве командлетов PowerShell объект можно задавать не только с помощью параметра inputObject но и передавать по конвейеру, поэтому для задания следующего свойства выберем такой метод:

$pocketknife | Add-Member NoteProperty Blades 3

Мы описали наш объект с помощью 4 свойств — цвет, размер, производитель и количество лезвий. Чтобы вывести одно свойство, нужно ввести имя объекта.свойство, например:

$pocketknife.manufacturer

Задаем свойства объекта

 

Свойства мы задали, теперь перейдем к методам.

Добавим новый метод:

Add-Member -memberType ScriptMethod In $pocketknife -name cut -Value { «Сейчас я режу» }

При задании методов имена параметров  можно опустить:

Add-Member in $pocketknife ScriptMethod screw { «А сейчас отвинчиваю» }

Или передать по конвейеру:

$pocketknife | Add-Member ScriptMethod corkscrew { «И открываю пробку» }

А теперь попробуем воспользоваться своим виртуальным ножом по назначению:

$pocketknife.cut()

«Сейчас я режу»

Объект $pocketknife выдал команду (script), которую мы заложили в метод cut . Чтобы узнать подробную информацию об этом методе, наберем:

$pocketknife.cut

Задаем методы объекта

Свойства (properties) и методы (methods) вместе составляют сущность объекта и называются элементами (members). Посмотреть все элементы объекта можно командой Get-Member

Все свойства и методы объекта

 

Нашим виртуальным ножом невозможно воспользоваться в реальности. Однако я надеюсь, что он помог вам понять, что из себя представляют объекты в PowerShell .  В следующей статье мы рассмотрим, что можно сделать с объектом, используя его свойства и методы.

 
 
Комментарии

Как в метод передать значение?
$pocketknife.cut(«колбасу»)
«Сейчас я режу колбасу»

В данном конкретном случае никак. А вообще зависит от объекта и от метода. Например:
$f = (Get-ChildItem c:\file.txt)
$f.MoveTo( ″c:\docs\file.txt ″)
Здесь сначала получаем объект FileInfo для файла file.txt, а затем с помощью метода MoveTo данного объекта задаем ему новое местоположение.