Сегодня мы рассмотрим как находить нужные команды, как вызывается справка по команде. И рассмотрим способ увидеть структуру и параметры объектов.
Как искать команды в Powershell?
Итак, перед Вами открыта консоль, а как известно, лучший способ изучить инструмент – это пользоваться им. Для максимально эффективной реализации Ваших задач и задумок, особенно, если Вы находитесь в условиях отсутствия прямого выхода в Интернет, необходимо уметь как минимум три вещи:
- Находить нужные команды;
- Находить справку по их применению и уметь ей пользоваться;
- Понимать, какие есть свойства и методы у того объекта, над которым Вы производите какие-либо действия.
У Вас в голове или на бумаге уже описан алгоритм реализации сформулированной задачи, но Вы не знаете с помощью каких команд это выполнить. В такой ситуации на помощь может прийти командлет Get-Command
. Для примера возьмем такую ситуацию:
Вам необходимо перезапустить службу Диспетчера печати. Вы не знаете с помощью каких команд можно взаимодействовать со службами, но Вы точно знаете, что Ваш целевой объект это – служба (Service).
Таким образом, чтобы решить эту проблему и найти подходящую команду выполним следующий код:
Get-Command *-Service*
Этот командлет в качестве параметра принимает имя или часть имени искомой команды (допускается использование подстановочных символов). И на выходе Вы получите список всех команд, в имени которых фигурирует наш объект – служба (Service). Get-Command
можно выполнить и без указания каких-либо параметров. В этом случае Вы получите полный список всех возможных команд с учетом установленных на момент выполнения модулей powershell. Но в нашем случае это избыточно. Для фильтрации избыточной информации Вы можете использовать ключ -CommandType
и указать тип желаемых объектов. Например, Cmdlet, что фактически будет означать “Покажи мне только команды, у которых параметр CommandType имеет значение Cmdlet”.

Таким образом мы видим, что для выполнения нашей задачи наверняка подойдет командлет Restart-Service
. При этом, если выполнить Get-Command
еще и с ключом -Syntax
, Вы сразу сможете увидеть общий синтаксис каждой команды, попавшей в вывод. Более подробно о структуре командлетов читайте здесь.
Справка по командам
В powershell так же существует довольно мощная справочная система. Так как с ростом версии powershell командлеты могут изменяться, то и справочная система время от времени обновляется. Чтобы ей воспользоваться необходимо выполнить команду Get-Help
, либо один из ее псевдонимов MAN
или HELP
. В отличие от Get-Help
псевдонимы выводят справку постранично, Get-Help
выводит всю справку целиком. Подробнее ►
Чтобы узнать, как работает команда перезапуска службы напишем команду Get-Help
, укажем командлет, по которому мы хотим получить справку – Restart-Service
. Погнали:
Get-Help Restart-Service

Стандартный вывод нам предоставляет краткое и полное описание команды, ее синтаксис, ссылки на документацию и информацию о некоторых полезных ключах. Например выполнение Get-Help
с ключом -Online
отобразит актуальную на текущий момент справку прямо из Интернета, если к нему есть доступ. Ключ -Examples
продемонстрирует ряд конкретных примеров использования командлета, по которому запрошена справка.
Отдельно отмечу такой довольно полезный ключ как -ShowWindow
. Выполнение Get-Help
с этим ключом вызывает графическое окно с полным справочным описанием команды и возможностью поиска по нему. Но его использование возможно только в операционной системе с графическим интерфейсом (GUI).

Таким образом из справки понятно, что для перезапуска службы “Диспетчер печати” достаточно выполнить командлет Restart-Service
. И в его параметре -Name
указать имя службы:
Restart-Service -Name spooler
Get-Member – просмотр свойств объекта
Возможно все это время Вас терзает вопрос – в чем же величие командлета Get-Member
?! Так как powershell – это язык объектно-ориентированный, то мы постоянно оперируем объектами. И часто возникает необходимость в понимании, какими свойствами и методами обладает объект? Каким будет тип данных у его свойств или в результате выполнения его методов? Различные командлеты могут принимать на вход значения конкретно заданного типа данных. И может возникнуть ситуация, когда с виду рабочий скрипт не работает. Причиной тому может быть неверный тип данных объекта, переданного по конвейеру.
Get-Member
– это тот инструмент, который позволяет заглянуть внутрь объекта и увидеть его методы и свойства. Подробнее о Get-Member
►
Для примера посмотрим какие свойства и методы есть у объекта класса System.DateTime (дата\время). Для чего выполним:
Get-Date | Get-Member
Вывод получится достаточно большим. Если опустить стандартный набор методов преобразования типов данных, можно получить следующий список методов и свойств:

Как Вы можете видеть, у объекта класса System.DateTime есть методы добавления к дате дней, часов, минут. Это может быть полезным в случае необходимости, например, просмотра логов за последнее какое-то количество дней. Для примера, чтобы получить дату за 5 дней до текущей, выполните метод (Get-Date).AddDays(-5)
и укажите отрицательное количество дней.
И есть свойства такие как DayOfWeek, DayOfYear. Обратившись к ним через точку (Get-Date).DayOfWeek
, Вы узнаете какой день недели или какой сегодня день по счету в году. В первом случае тип данных будет – System.DateTimeKind. А во втором – Int. Так же в параметре TypeName (в самом верху) Вы можете видеть тип самого объекта. В нашем случае это – System.DateTime.
Get-Member
– это незаменимый помощник. Особенно, если Вы используете командлет впервые или у Вас возникла какая-либо новая потребность.
Анонс следующей статьи: “Знакомые команды CMD, модули и их обзор в консоли ISE”