Хотя на первый взгляд это не очевидно, при работе с оболочкой 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 не требуется понимать все нюансы работы с объектами — достаточно не терять из виду общую концепцию. Скоро вы сможете использовать объекты по-настоящему эффективно.