Обработка объектов

Опубликовано: Май 2009 г.

Обновлено: Август 2012 г.

Назначение: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0

Хотя на первый взгляд это не очевидно, при работе с оболочкой Windows PowerShell на самом деле идет работа с объектами .NET Framework. По мере накопления опыта достоинства обработки объектов станут для вас более очевидными, и вы начнете даже думать "объектами".

С технической точки зрения объект .NET Framework представляет собой экземпляр класса .NET Framework, состоящий из данных и связанных с ними операций. Объект можно рассматривать как сущность, имеющую свойства (характеристики сущности) и методы (действия, которые можно выполнять над сущностью).

Например, при возврате службы в Windows PowerShell на самом деле возвращается объект, представляющий соответствующую службу. При просмотре сведений о службе отображаются свойства объекта-службы. При запуске службы, то есть при изменении ее свойства Status на started, выполняется метод объекта-службы.

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

Получить сведения об объектах несложно. Чтобы узнать тип объекта, получаемого командлетом, передайте результат выполнения команды get команде Get-Member с помощью оператора конвейерной обработки (|). Например, следующая команда передает объекты, возвращенные командой Get-Service, команде Get-Member.

get-service | get-member 

Команда Get-Member отображает сведения об объекте службы, в том числе имя типа объекта и список его свойств и методов.

   TypeName: System.ServiceProcess.ServiceController

Name                      MemberType    Definition
----                      ----------    ----------
Name                      AliasProperty Name = ServiceName
add_Disposed              Method        System.Void add_Disposed(EventHandler value)
Close                     Method        System.Void Close()
Continue                  Method        System.Void Continue()
...

Чтобы получить сведения о классе объекта, скопируйте и вставьте имя типа (например, System.ServiceProcess.ServiceController) в MSDN. Обнаружив нужный класс, можно просмотреть подразделы MSDN со сведениями о свойствах и методах объектов, основанных на этом классе и аналогичных объектам оболочки Windows PowerShell.

Чтобы узнать значения всех свойств конкретного объекта, нужно передать результат выполнения команды get команде Format-List или Format-Table с помощью оператора конвейерной обработки (|). Вводя при этом командлеты форматирования, укажите параметр Property со значением "все" (*). Например, чтобы просмотреть значения всех свойств службы Schedule, введите следующую команду:

get-service schedule | format-list -property *

В результате будут возвращены подобные данные:

Name                : Schedule
CanPauseAndContinue : True
CanShutdown         : True
CanStop             : True
DisplayName         : Task Scheduler
DependentServices   : {}
MachineName         : .
ServiceName         : Schedule
ServicesDependedOn  : {RpcSs}
ServiceHandle       : SafeServiceHandle
Status              : Running
ServiceType         : Win32ShareProcess
Site                :
Container           :

При знакомстве с Windows PowerShell не требуется понимать все нюансы работы с объектами — достаточно не терять из виду общую концепцию. Скоро вы сможете использовать объекты по-настоящему эффективно.



Добавления сообщества

Показ: