Этой публикацией я открываю небольшой цикл, в котором расскажу о командной строке – Windows PowerShell 1.0. Я ставлю перед собой задачу дать начальное представление, что это такое и как устроено, и показать простые примеры использования, которые могут пригодиться администраторам в реальной работе. Я намеренно оставляю за кадром архитектуру PowerShell и возможности программирования на нем (скрипты, использование .NET объектов), сосредоточившись исключительно на интерактивном применении простых команд.
Часть 1
Windows PowerShell - что это такое?
- Windows PowerShell (далее WPS) - это продвинутая командная строка, подобная UNIX shell, но с поддержкой .NET, COM и WMI.
- Команды, которые вы вызываете в WPS, называются commandlets (в русской документации они называются командлеты, я же далее буду называть их команды)
- Команды поддерживают конвейеры (pipelines), т.е. могут передавать результат своей работы другим командам в рамках одной строки вызова
Где взять?
В Windows 2008 поставляется в дистрибутиве, но требует отдельной установки через добавление роли. Для других ОС нужно скачать дистрибутив с сайта Microsoft. Поддерживаемые ОС:
- Windows XP with Service Pack 2
- Windows Server 2003 with Service Pack 1
- Windows Vista
WPS является .NET приложением и требует наличия .NET 2.0 в системе. WPS может работать в двух режимах – интерактивном и скриптовом. Мы будем рассматривать работу в интерактивном режиме.
Первые команды
Откройте консоль WPS и наберите следующие команды (WPS регистронезависим):
get-process - вы получите список всех процессов в системе
get-service ms* – вы получите список всех сервисов, имена которых начинаются с ms
get- и нажмите клавишу tab – вы воспользовались функцией автозавершения (нажимая клавишу несколько раз, вы перебираете возможные варианты команд)
Get-Eventlog – эта команда требует ввода параметров, ответьте на приглашение LogName: и введите Application – будет выведен системный журнал событий Application
Структура команд
Команда WPS состоит из трех элементов – глагола, существительного и списка параметров (опционально). Глагол и существительное разделены дефисом, например:
get-process
Список параметров передается через пробел, например:
Get-childitem c:\ (будет выведено содержимое корневого каталога)
Если параметр содержит пробел, его надо заключать в кавычки:
Get-childitem “c:\Program Files”
Параметры можно передавать по имени или по порядку. В случае передачи по порядку, он должен соответствовать порядку параметров в документации, иначе будет ошибка. Например:
Get-ChildItem C:\mydata *.doc
Get-ChildItem -Path C:\mydata -Filter *.doc
Get-ChildItem -Filter *.doc -Path C:\mydata
Get-ChildItem *.doc C:\mydata - эта строка даст ошибку
Параметр без значения называется свитчем, и по смыслу является функцией:
Get-ChildItem с:\mydata\docs –recurse
Автозавершение также работает с параметрами. Попробуйте это на примере get-childitem +tab. Также при задании параметров поддерживаются стандартные символы заместители (*, ?, интервалы [a-v] и т.п.) , например:
Get-process ?i*
В следующей части я расскажу про псевдонимы и работу с конвейерами.
В Windows 2008 поставляется в дистрибутиве, но требует отдельной установки через добавление роли.
Может так, – требует установки через добавление функции?
Да, я не совсем корректно написал. PowerShell в Windows 2008 идет как feature, а не как роль. Спасибо за поправку.