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