- •Цели разработки Windows PowerShell
- •Командлеты Windows PowerShell
- •Новый язык сценариев
- •Конвейеры объектов
- •Запуск Windows PowerShell
- •Использование командлетов
- •Получение сведений об объектах: командлет Get-Member
- •Использование параметров командлетов
- •Использование псевдонимов
- •Использование программ Windows
- •Управление ошибками
- •Навигация в Windows PowerShell
- •Просмотр файловой системы
- •Просмотр реестра
- •Просмотр хранилища сертификатов
- •Диски и поставщики
- •Профили Windows PowerShell
- •Основные сведения о профилях
- •Создание профиля
Командлеты Windows PowerShell
Командлет — это команда Windows PowerShell, предназначенная для работы с объектами и выполняющая единственную функцию. Командлеты можно идентифицировать по их именам, которые составлены из глагола и существительного, разделенных дефисом (-), например Get-Help, Get-Process и Start-Service.
В традиционных оболочках команды представляют собой исполняемые программы, которые могут быть как совсем простыми (например, attrib.exe), так и очень сложными (netsh.exe).
Большинство командлетов Windows PowerShell очень просты, и предполагается, что они будут использоваться вместе с другими командлетами. Например, командлеты категории «get» только возвращают данные, командлеты «set» только задают или изменяют значения элементов данных, командлеты «format» только форматируют данные, а командлеты «out» только направляют вывод в указанное место назначения.
С каждым командлетом ассоциирован файл справки, который можно просмотреть, введя следующую команду:
get-help <имя-командлета> -detailed
Подробное представление файла справки по командлету включает описание командлета, его параметров и синтаксиса команды, а также пример использования командлета.
Новый язык сценариев
При разработке оболочки Windows PowerShell было принято решение создать для нее новый язык, а не использовать какой-либо из уже существующих. Это было сделано в силу следующих причин.
Язык Windows PowerShell должен был поддерживать управление объектами .NET.
Язык Windows PowerShell должен был обеспечивать согласованную среду использования командлетов.
Язык Windows PowerShell должен был поддерживать решение сложных задач, не делая простые задачи более сложными.
Язык Windows PowerShell должен был обладать совместимостью с высокоуровневыми языками, используемыми при программировании для .NET, такими как C#.
Команды и служебные программы Windows
Оболочка Windows PowerShell позволяет выполнять имеющиеся в Windows программы командной строки и запускать программы Windows с графическим пользовательским интерфейсом, такие как «Блокнот» и «Калькулятор». Создаваемый этими программами текст можно перехватывать и использовать в оболочке почти так же, как и при работе с Cmd.exe.
Обработка объектов
Хотя на первый взгляд это не очевидно, при работе с оболочкой Windows PowerShell на самом деле вы имеете дело с объектами .NET. По мере накопления опыта достоинства обработки объектов станут для вас более очевидными, и вы начнете даже думать «объектами».
С технической точки зрения объект .NET — это экземпляр класса .NET, состоящий из данных и операций, определенных для этих данных. Объект можно рассматривать как сущность, имеющую свойства (характеристики сущности) и методы (действия, которые можно выполнять над сущностью).
Например, при возврате службы средствами оболочки 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 не требуется понимать все нюансы работы с объектами — достаточно не терять из виду общую концепцию. Скоро вы сможете использовать объекты по-настоящему эффективно.
