Опубликован: 12.01.2008 | Уровень: специалист | Доступ: свободно
Лекция 16:

Введение в оболочку командной строки Windows PowerShell

< Лекция 15 || Лекция 16: 12 || Лекция 17 >

Имена и структура командлетов

Как уже было отмечено выше, в PowerShell аналогом внутренних команд являются командлеты. Командлеты могут быть очень простыми или очень сложными, но каждый из них разрабатывается для решения одной, узкой задачи. Работа с командлетами становится по-настоящему эффективной при использовании их композиции (конвейеризации объектов между командлетами). Подробнее об этом мы поговорим на следующей лекции.

Имена командлетов всегда соответствуют шаблону "глагол-существительное", где глагол задает определенное действие, а существительное определяет объект, над которым это действие будет совершено.

Например, Get-Process (получить информацию о процессе), Stop-Service (остановить службу), Clear-Host (очистить экран консоли) и т.д. Чтобы просмотреть список командлетов, доступных в ходе текущего сеанса, нужно выполнить командлет Get-Command:

PS C:\> Get-Command

CommandType  Name            Definition
-----------  ----            ----------
Cmdlet       Add-Content     Add-Content [-Path] <String[]> [-Value] <Object[...
Cmdlet       Add-History     Add-History [[-InputObject] <PSObject[]>] [-Pass...
Cmdlet       Add-Member      Add-Member [-MemberType] <PSMemberTypes> [-Name]...
Cmdlet       Add-PSSnapin    Add-PSSnapin [-Name] <String[]> [-PassThru] [-Ve...
Cmdlet       Clear-Content   Clear-Content [-Path] <String[]> [-Filter <Strin...
Cmdlet       Clear-Item      Clear-Item [-Path] <String[]> [-Force] [-Filter ...
...
16.1.

По умолчанию командлет Get-Command выводит сведения в трех столбцах: CommandType, Name и Definition. При этом в столбце Definition отображается синтаксис командлетов (многоточие ( ) в столбце синтаксиса указывает на то, что данные обрезаны).

Командлеты могут иметь параметры, к которым можно обратиться по имени, перед которым ставится дефис ( - ), или по позиции (в последнем случае интерпретация параметра будет выполняться в зависимости от его местоположения в командной строке).

Замечание

Косые черты ( / и \ ) вместе с параметрами в оболочке Windows PowerShell не используются.

В общем случае синтаксис командлетов имеет следующую структуру:

имя_командлета –параметр1 -параметр2 аргумент1 аргумент2

Здесь параметр1 – параметр (переключатель), не имеющий значения; параметр2 – имя параметра, имеющего значение аргумент1 ; аргумент2 – параметр, не имеющий имени. Например, командлет Get-Process имеет параметр Name, который определяет имя процесса, информацию о котором нужно вывести. Имя этого параметра указывать необязательно. Таким образом, для получения сведений о процессе Far можно ввести либо команду Get-Process -Name Far, либо команду Get-Process Far.

Автоматическое завершение команд

Находясь в оболочке PowerShell, можно ввести часть какой-либо команды, нажать клавишу <Tab> и система попытается сама завершить эту команду.

Подобное автоматическое завершение срабатывает, во-первых, для имен файлов и путей файловой системы. При нажатии клавиши <Tab> PowerShell автоматически расширит частично введенный путь файловой системы до первого найденного совпадения. При повторении нажатия клавиши <Tab> производится циклический переход по имеющимся возможностям выбора. Также в PowerShell реализована возможность автоматического завершения путей файловой системы на основе шаблонных символов ( ? и * ). Например, если ввести команду cd c:\pro*files и нажать клавишу <Tab>, то в строке ввода появится команда cd 'C:\Program Files'.

Во-вторых, в PowerShell реализовано автозавершение имен командлетов и их параметров. Если ввести первую часть имени командлета (глагол) и дефис, нажать после этого клавишу <Tab>, то система подставит имя первого подходящего командлета (следующий подходящий вариант имени выбирается путем повторного нажатия <Tab>). Аналогичным образом автозавершение срабатывает для частично введенных имен параметров командлета: нажимая клавишу <Tab>, мы будем циклически перебирать подходящие имена.

Наконец, PowerShell позволяет автоматически завершать имена используемых переменных (объектов) и имена свойств объектов .

Псевдонимы команд

Механизм псевдонимов, реализованный в оболочке PowerShell, дает возможность пользователям выполнять команды по их альтернативным именам (например, вместо команды Get-Childitem можно пользоваться псевдонимом dir ). В PowerShell заранее определено много псевдонимов, можно также добавлять собственные псевдонимы в систему.

Псевдонимы в PowerShell делятся на два типа. Первый тип предназначен для совместимости имен с разными интерфейсами. Псевдонимы этого типа позволяют пользователям, имеющим опыт работы с другими оболочками (Cmd.exe или Unix-оболочки), использовать знакомые им имена команд для выполнения аналогичных операций в PowerShell, что упрощает освоение новой оболочки, позволяя не тратить усилий на запоминание новых команд PowerShell. Например, пользователь хочет очистить экран. Если у него есть опыт работы с Cmd.exe, то он, естественно, попробует выполнить команду cls. PowerShell при этом выполнит командлет Clear-Host, для которого cls является псевдонимом и который выполняет требуемое действие – очистку экрана. Для пользователей Cmd.exe в PowerShell определены псевдонимы cd, cls, copy, del, dir, echo, erase, move, popd, pushd, ren, rmdir, sort, type ; для пользователей Unix – псевдонимы cat, chdir, clear, diff, h, history, kill, lp, ls, mount, ps, pwd, r, rm, sleep, tee, write.

Узнать, какой именно командлет скрывается за знакомым псевдонимом, можно с помощью командлета Get-Alias:

PS C:\> Get-Alias cd
CommandType     Name           Definition
-----------     ----           ----------
Alias           cd             Set-Location

Псевдонимы второго типа (стандартные псевдонимы) в PowerShell предназначены для быстрого ввода команд. Такие псевдонимы образуются из имен командлетов, которым они соответствуют. Например, глагол Get сокращается до g, глагол Set сокращается до s, существительное Location сокращается до l и т.д. Таким образом, для командлету Set-Location соответствует псевдоним sl, а командлету Get-Location – псевдоним gl.

Просмотреть список всех пседонимов, объявленных в системе, можно с помощью командлета Get-Alias без параметров. Определить собственный псевдоним можно с помощью командлета Set-Alias.

Справочная система PowerShell

В PowerShell предусмотрено несколько способов получения справочной информации внутри оболочки.

Краткую справку по одному командлету можно получить с помощью параметра ? (вопросительный знак), указанного после имени этого командлета. Например:

PS C:\> get-process -?

ИМЯ
    Get-Process
ОПИСАНИЕ
    Отображает процессы, выполняющиеся на локальном компьютере.

СИНТАКСИС
    Get-Process [[-name] <string[]>] [<CommonParameters>]
    Get-Process -id <Int32[]> [<CommonParameters>]
    Get-Process -inputObject <Process[]> [<CommonParameters>]

ПОДРОБНОЕ ОПИСАНИЕ
    Командлет Get-Process извлекает объект-процесс для каждого процесса. 
    При использовании командлета "Get-Process" без указания параметров 
    происходит отображение всех процессов, выполняющихся на компьютере, 
    что эквивалентно команде "Get-Process *". Процесс можно определить 
    по имени или идентификатору (PID) или передав объект по ковнейеру 
    в командлет Get-Process. Для Get-Process по умолчанию 
    передается имя процесса. Для Stop-Process по умолчанию передается 
    идентификатор процесса.

ССЫЛКИ ПО ТЕМЕ
    Stop-Process

ЗАМЕЧАНИЯ
    Для получения дополнительных сведений введите: 
      "get-help Get-Process -detailed".
    Для получения технических сведений введите: 
      "get-help Get-Process -full".

Более подробную информацию можно получить с помощью специального командлета Get-Help с параметрами Detailed или Full (например, Get-Help Get-Process -Full ). Запустив данный командлет с параметром *, можно увидеть все доступные разделы справочной системы.

Командлет Get-Help позволяет просматривать справочную информацию не только о разных командлетах, но и о синтаксисе языка PowerShell, о псевдонимах, о различных аспектах работы оболочки функциям и т.д. Список тем, обсуждение которых представлено с справочной службе PowerShell, можно увидеть следующим образом:

PS C:\> Get-Help about_*

Name                         Category    Synopsis
----                         --------    --------
about_alias                  HelpFile    Использование альтернативных имен ко...
about_arithmetic_operators   HelpFile    Операторы, которые используются в ко...
about_array                  HelpFile    Компактная структура размещения элем...
about_assignment_operators   HelpFile    Операторы, используемые в оболочке W...
about_associative_array      HelpFile    Компактная структура данных для хран...
about_automatic_variables    HelpFile    Переменные, автоматически задаваемые...
about_break                  HelpFile    Инструкция для немедленного завершен...
about_command_search         HelpFile    Как оболочка Windows PowerShell обна...
about_command_syntax         HelpFile    Формат команд в Windows PowerShell
. . .
16.2.

Таким образом, чтобы прочитать справочную информацию об использовании массивов в PowerShell, нужно выполнить следующую команду: Get-Help about_array.

Командлет Get-Help выводит содержимое раздела справки на экран сразу целиком. Функции man и help позволяют справочную информацию выводить поэкранно (аналогично команде MORE интерпретатора Cmd.exe), например: man about_array.

< Лекция 15 || Лекция 16: 12 || Лекция 17 >
Валентина Тюрина
Валентина Тюрина
Нажатие кнопок в сторонних программах
Александр Тагильцев
Александр Тагильцев
Где проводится профессиональная переподготовка?
Анатолий Федоров
Анатолий Федоров
Россия, Москва, Московский государственный университет им. М. В. Ломоносова, 1989
Игорь Ермачков
Игорь Ермачков
Латвия, Рига