Windows PowerShell. Коротко о главном
обзор посвящен использованию ключевы6 возможностей Windows PowerShell для выполнения различны6 административны6 задач. Сначала рассмотрим встроенные средства ознакомления с возможностями Windows PowerShell.
Знакомство с возможностями Windows PowerShell
Итак, вы — администратор, которому необходимо в кратчайший срок освоить Windows PowerShell. Первое, что вы, вероятно, предпримете (естественно, помимо обращения к документации и справочной системе), — воспользуетесь командой Help (рис. 1).
Рис. 1
Внимательно изучив выведенную на экран информацию, мы придем к пониманию следующих концептуальных вещей: в Windows PowerShell существуют алиасы, командлеты, провайдеры, а также справочные файлы. Алиасы (alias) служат для упрощения ввода команд (например, clc — это алиас команды Clear-Content), командлеты (cmdlet) представляют собой реализацию всех встроенных в Windows PowerShell команд, провайдеры (provider) обеспечивают доступ к файловой системе, реестру, хранилищу сертификатов и т.п., а справочные файлы (helpfile) используются для получения дополнительной информации. Для получения подробного описания команды применяется следующий синтаксис:
PS C:> Help Get-Command
В результате выполнения этой команды мы получим полное описание команды Get-Command, включая ее назначение, синтаксис, опции и т.п. (рис. 2).
Рис. 2
Для получения списка всех встроенных команд используем следующий синтаксис:
PS C:> Get-Command
Обратите внимание на то, что все команды состоят из глагола и прилагательного (например, Get-Content, Export-Console) и все команды поддерживают единую систему именования — например для завершения чего-либо всегда используется глагол Stop, а не Kill, Terminate, Halt или другие синонимы, что существенно упрощает изучение возможностей PowerShell (рис. 3).
Рис. 3
Команда Get-Service служит для получения списка всех сервисов, запущенных на данном компьютере. Например, PS C:> Get-Service возвращает список, представленный на рис. 4.
Рис. 4
Для получения списка процессов, запущенных в настоящий момент на компьютере, применяется команда Get-Process (рис. 5):
Рис. 5
PS C:> Get-Process
В Windows PowerShell поддерживается автоматическое завершение ввода. Чтобы убедиться в этом, введите Get-P и нажмите клавишу TAB: вы получите возможность выбора всех команд, начинающихся с введенных символов.
Для получения информации только об одном процессе в качестве аргумента команды Get-Process задается имя этого процесса (рис. 6):
Рис. 6
PS C:> Get-Process explorer
Для того чтобы получить список всех процессов, названия которых начинаются с определенного символа, достаточно указать этот символ и «*» (рис. 7):
Рис. 7
PS C:> Get-Process i*
Обратите внимание на колонки, в которых содержится информация, — Handles, NMP(K) и т.п. По умолчанию информация выводится в виде таблицы, но на самом деле все команды возвращают объекты. Эти объекты могут быть переданы на вход другим командам с помощью символа «|»
(рис. 8):
Рис. 8
PS C:> Get-Process i* | format-list
Теперь список процессов доступен в другом представлении. Для получения подробной информации о различных форматах можно использовать следующую команду:
PS C:> Help format *
Другие возможные форматы:
PS C:> Get-Process i* | format-wide и
PS C:> Get-Process i* | format-custom
Поскольку на выходе всегда получается объект, можно манипулировать им для выполнения дополнительных операций, например фильтрации: PS C:> Get-Process | where {$_.handlecount -gt 400} или сортировки:
PS C:> Get-Process | where {$_.handlecount -gt 400} | sort-object Handles
Может возникнуть вполне резонный вопрос: а откуда мы узнали, что у объекта, описывающего процесс, есть свойство handlecount? Для получения списка всех свойств объекта применяется следующая команда (рис. 9):
Рис. 9
PS C:> Get-Process | Get-Member
Выполним команду Get-Process | Get-Member Company — при форматировании по умолчанию невозможно получить желаемые данные. Преобразуем полученную команду в:
PS C:> Get-Process | Get-Member Company | Format-List Результат ее преобразования представлен на рис. х0.
Рис. 10
PS C:> Get-Process | sort-object Company | format-table -Group Company name, description, handles
Результат выполнения данной команды представлен на рис. хх.
Рис. 11
Команда stop-process позволяет остановить запущенный процесс, например:
PS C:> Get-process notepad | stop-process
Такая возможность не всегда является безопасной, поэтому лучше использовать подобные команды с опцией whatif, которая показывает, что произойдет при выполнении той или иной команды, но на самом деле команда не выполняется:
PS C:> Get-Process notepad | stop-process –whatif
Кроме того, можно указывать на необходимость подтверждения перед выполнением команды:
PS C:> Get-Process notepad | stop-process –confirm
Результат выполнения команды с подтверждением представлен на рис. х2.
Рис. 12
В последнем примере мы получаем описание действий, которые выполняет команда, и можем выбрать, подтверждать ее выполнение или нет.
Помимо этого можно создавать собственные пакетные файлы, представляющие собой файлы с расширением *.psх, в которые помещаются команды PowerShell, и выполнять их. Для соблюдения безопасности пакетные файлы должны быть подписаны. При тестировании можно отключить требование по запуску только подписанных файлов: PS C:> Set-ExecutionPolicy Unrestricted
но после окончания тестирования не забудьте снова включить данную опцию с помощью следующей команды:
PS C:> Set-ExecutionPolicy AllSigned
После знакомства с основами Windows PowerShell посмотрим, как с помощью данной утилиты можно решать различные административные задачи.
