MyTetra Share
Делитесь знаниями!
Использование PowerShell в качестве интерактивной оболочки
Время создания: 22.04.2015 12:04
Текстовые метки: Windows Power Shell, PowerShell, обзор, документация, введение
Раздел: Компьютер - Windows - Windows Power Shell
Запись: xintrea/mytetra_syncro/master/base/1429693458qt0n33inju/text.html на raw.github.com

Использование PowerShell в качестве интерактивной оболочки

Хотя Windows PowerShell включает простой и мощный язык для написания скриптов, одним из преимуществ этой технологии является то, что его можно использовать в качестве удобной командной оболочки без написания сложных скриптов. Большое количество административных задач можно выполнять используя PowerShell для ввода интерактивных команд.

Windows PowerShell был разработан для того, чтобы его немедленно могли использовать администраторы, которые уже знакомы со старой оболочкой, в том числе Cmd.exe оболочкой, входящей в Windows, а также обычными оболочками Unix. В то время как некоторые из команд, работают немного по новому принципу, также вы найдете много знакомых команд, доступных для вас.

Например команды, которые вы бы использовали для выполнения каждой из следующих задач в оболочке cmd или Unix shell:

• Изменить каталоги.

• Список файлов и подкаталогов в каталоге.

• Скопировать файл.

• Отображение содержимого текстового файла.

• Удалить файл.

• Перемещение файлов.

• Переименовать файл.

• Создать новый каталог.

С Windows PowerShell можно также запускать большинство внешних команд, которые могут быть знакомы вам:

• Ipconfig.exe

• Ping.exe

• Tracert.exe

• Nslookup.exe

• Pathping.exe

• Net.exe (например, Net Use)

Windows PowerShell распознает многие из имен команд, с которыми вы, вероятно, уже знакомы, в том числе Cd, Dir, Ls, Cat, Type, MkDir, RmDir, Rm, Del, Cp, Copy, Move и так далее. Одновременно доступны наиболее общие file-and-folder команды управления Cmd.exe (которая использует MS-DOS Синтаксис команды) и оболочки Unix.

В большинстве случаев, однако, параметры этих команд разные. Например, в Cmd.exe вы можете выполнить следующую команду:

Dir /s

В Windows PowerShell та же команда выдаст ошибку, потому что /s, не признается действительным параметром.

Тем не менее, наличие этих знакомых имен команд поможет вам начать использовать оболочку немедленно.

Внешние команды (программы), такие как Ipconfig.exe, Pathping.exe, и так далее, продолжают работать как всегда. Вы можете, например, запустить эту общую команду из Windows PowerShell:

Ipconfig / all

Разница в том, что Ipconfig.exe является внешним исполняемым, в то время как команды, такие как Dir являются внутренними командами. Это верно также и для Cmd.exe. Внутренние команды, как правило, имеют синтаксис параметров, который отличается от того, к чему вы привыкли, и внешние исполняемые файлы будут продолжать функционировать как всегда.

Иерархические хранилища


Файловая система Windows и, если уж на то пошло, файловая система большинства компьютеров является иерархической. Это означает, что она состоит из отдельных ячеек, которые называются "папками" или "директориями", которые, в свою очередь, содержат либо файлы, либо другие папки. Папки содержат подпапки, которые, опять же, содержат свои подпапки, и так далее.

Большинство администраторов Windows помнят основные команды, необходимые для управления иерархической файловой системой: Cd, Dir, Copy, Move и другие. Однако файловая система – это не единственная иерархическая система в Windows. Реестр, хранилище сертификатов, Active Directory и многие другие системы хранения также имеют иерархическую структуру. Помимо этого Windows включает в себя ряд линейных (не-иерархических) хранилищ, таких как переменная среды операционной системы.

Одной из ключевых конструктивных задач Windows PowerShell является адаптация комплекса техник или процессов с целью использования данного комплекса в дальнейшем для решения сходных задач. Например, если реестр и файловая система имеют одну и ту же иерархическую структуру, то почему бы не использовать одни и те же команды для навигации и управления тем и другим? Другими словами, если администраторы уже знают стандартный набор команд, которые применяются в работе с иерархическим хранилищем одной формы, почему бы не адаптировать эти команды для работы с другими формами хранилищ, в том числе линейной?

Возможность использования единого набора команд для навигации по хранилищам, имеющим различную форму, становится возможным благодаря функции Windows PowerShell, которая называется провайдер PSDrive или просто провайдер. Провайдер представляет собой разновидность адаптера, который устанавливает соединение с системой хранения и представляет ее Windows PowerShell в форме дискового накопителя. Когда вы подаете команду, такую как Cd или Dir, она передается провайдеру данного диска, и провайдер делает все необходимое для того, чтобы выполнить эту команду.

Windows PowerShell оснащена несколькими провайдерами, в том числе для:

• Файловой системы,

• Реестра,

• Переменной среды,

• Хранилища сертификатов

Также она включает провайдеров для собственных хранилищ оболочки, включая хранилище функций, псевдонимов и переменных, о которых вы узнаете позже.

Оболочка может быть расширена и модернизирована для использования других провайдеров. Уже существуют провайдеры для IIS, SQL Server, Active Directory и многих других форм хранилищ. Все провайдеры придают соответствующим хранилищам форму дискового накопителя. Эти дисковые накопители внутри оболочки официально называются PSDrives или Windows PowerShell Drives. Они не отображаются за пределами оболочки в Windows Explorer и могут иметь названия, состоящие более, чем из одной буквы. Например, диски реестра называются HKCU: и HKLM:. Вы можете создавать новые диски, уточняя каждый раз имя нового диска, провайдера, который будет использоваться, например, провайдер файловой системы и начальную ячейку, с которой провайдер будет устанавливать соединение, например, папку или сетевое имя. Обратите внимание, что оболочка всегда начинает работу с одного и того же диска, когда вы начинаете новую сессию; любые новые созданные вами диски сбрасываются при завершении работы с оболочкой.

Командная оболочка включает полный набор команд для управления хранилищами PSDrives:

Get-PSDrive: выводит все доступные хранилища. По умолчанию, этот список включает все доступные накопители и логические диски.

New-PSDrive: создает новое хранилище. Вы должны указать имя хранилища (без двоеточия на конце), имя провайдера и стартовую точку или путь. Тип такой стартовой точки или пути зависит от типа используемого провайдера.

Remove-PSDrive: уничтожает хранилище. Вы также можете удалить хранилища, присутствующие по умолчанию, например HKCU: или ENV:, однако они будут воссозданы при запуске нового экземпляра оболочки.


Псевдонимы

Большинство обычных команд, с которыми вы встречались в оболочке, такие как Dir, Cd, Ls, Copy, Rm и другие на самом деле являются псевдонимами Windows PowerShell. Псевдоним – это укороченное название (никнейм) команды. Они создаются для того, чтобы упростить и ускорить набор команд, а также, чтобы имена команд, которыми вы пользовались в других оболочках, были легко узнаваемыми. Например, Dir – это псевдоним команды Get-ChildItem. Ls – это псевдоним той же самой команды, так же как и Gci. Псевдонимы не меняют принципа действия команд или их параметров. Псевдоним – это всего лишь никнейм.

В Windows PowerShell встроенные команды называются командлеты. Они отличаются от внешних команд, таких как Ipconfig.exe по нескольким параметрам:

Командлеты имеют четко определенную структуру названия: глагол-существительное в единственном числе (англ). Глаголы берутся из конкретного строго оговоренного списка. Такая структура позволяет сделать названия более упорядоченными и легко запоминающимися. Существительные всегда идут в единственном числе: ChildItem” вместо “ChildItems,” или “PSDrive” вместо “PSDrives.” Единственное число используется даже тогда, когда командлет относится к нескольким компонентам.

Командлеты пишутся на одном из языков .NET Framework, например, Visual Basic или C# и бывают упакованы в пакет .NET Framework с расширением .dll. Эти пакеты называются оснастки или PSSnapin. В действительности оболочка не содержит встроенных командлетов; она автоматически загружает несколько оснасток, когда вы открываете новое окно в оболочке.

Тот факт, что Dir – это псевдоним, объяснят причину, по которой Dir /s не работает: вы используете не привычную команду Dir, а командлет Get-ChildItem, для которого Dir – это псевдоним.

Вы не ограничены использованием псевдонимов, предустановленных в Windows PowerShell. Вы можете создавать свои собственные псевдонимы, импортировать и экспортировать их, делиться ими с коллегами и сотрудниками. Вы можете даже удалять псевдонимы – в Windows PowerShell они хранятся в ALIAS:, поэтому удаление той или иной единицы с данного диска удаляет псевдоним. Однако не стоит беспокоиться о том, что вы случайно можете удалить один из базовых псевдонимов: все изменения действуют лишь в пределах одной сессии, каждый раз при открытии нового окна восстанавливаются исходные параметры. Точно так же созданные вами новые псевдонимы будут работать только в рамках текущей сессии. Экспорт созданных псевдонимов в отдельный файл упростит их импортирование обратно в будущем.

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

Вот несколько команд, которые вы можете использовать для управления псевдонимами:

·       Get-Alias – отображение список всех псевдонимов. Также можно использовать Dir Alias: чтобы увидеть все содержимое папки ALIAS: drive.

·       New-Alias – создание нового псевдонима. Здесь обязательно указать имя нового псевдонима, а также название команды, для которой он предназначен.

·       Del или Rm – удаление псевдонима из ALIAS: drive.

·       Import-Alias и Export-Alias – импорт и экспорт псевдонимов в файл и из файла.


Использование справки

Одно из главных достоинств графического пользовательского интерфейса (GUI) – это его простота. Возможно, вы уже имели возможность убедиться в этом на собственном опыте, пусть даже и не осознавая это: блуждая по меню, чтобы посмотреть доступные функции, кликая правой кнопкой мыши, чтобы увидеть, какие действия предлагаются в контекстном меню или наводя курсор на иконки, чтобы увидеть всплывающие подсказки. Все это можно сделать с помощью графического интерфейса, не прилагая особых усилий.

В интерфейсе командной строки этого удобства явно недостает. Традиционно это делает такие оболочки более сложными в изучении, поскольку стартовая точка отсутствует. В Windows PowerShell, однако, предусмотрены некоторые подсказки, которые помогут вам изучить оболочку и выяснить, какие функции вам доступны.

Одной из таких подсказок является встроенная справочная система. Большая часть командлетов Microsoft включает подробное описание. Просто запустите команду Help, дополненную названием командлета или псевдонимом, и вы увидите подробное описание данного командлета. В случае, если вы указываете псевдоним, вам будет показано описание командлета, благодаря чему вы сможете узнать его полное название (если все, что вы знали до этого, был псевдоним).

Попробуйте выяснить название командлета для таких псевдонимов, как Type, Cat, и Del.

Если вы знакомы с названием команд в Unix, вы можете использовать Man вместо Help – результат будет тот же.

С помощью некоторых параметров команды Help можно получить еще более подробную информацию:

·       -detailed – показ более детального описания

·       -examples – показ примеров использования

·       -full – показ полной информации, включая детальное описание, описание каждого параметра и примеры использования

·       -online – открытие браузера и показ описания командлетов на сайте Microsoft. На сайте может содержаться обновленная или расширенная информация, которая еще не была выпущена в служебном пакете.

Например, чтобы увидеть полное описание командлета Get-ChildItem, вам необходимо запустить команду

Help gci –full

Если той информации, что вы почерпнули из данного курса, вам кажется недостаточно, учитесь использовать справочную систему оболочки. Сроднитесь с ней. Пользуйтесь ей как можно чаще, чтобы не только запоминать синтаксис командлетов, но и осваивать их возможности.

Прочитайте описание каждого командлета, который встретится вам в процессе изучения курса. Большинство командлетов имеют дополнительные функции и возможности, знание которых может рано или поздно пригодиться. Также возьмите в привычку использовать параметр – example в совокупности с командой Help. Примеры использования – это лучший способ узнать о возможностях командлетов, запомнить написание и.т.д. Нет нужды искать примеры в Интернете – все необходимые примеры встроены в справочную систему оболочки; ими можно воспользоваться в любое удобное время.

Иногда очень неудобно заглядывать в справку, особенно, если вы уже почти закончили написание длинной команды. Помните, что в таком случае вы можете открыть новое окно и заглянуть в справочник там, не прерывая работы в первом окне.

В процессе изучения справочной информации вы заметите, что командлеты Windows PowerShell обычно поддерживают один или несколько параметров. Краткий справочник по синтаксису в файле справки дает ряд полезных советов о том, как эти параметры работают.

Некоторые параметры не требуют значения. Они называются переключателями и используются, чтобы указать, должна текущая команда отправить дополнительные запросы или активировать другой параметр для запуска команды или нет. В справочнике эти параметры можно узнать по отсутствию значения после названия параметра:

-Recurse

Другие параметры требуют ввода значения – в справочнике указано, какое значение (например, число или строка) необходимо тому или иному параметру:

-Exclude <string[]>

Некоторые параметры являются обязательными – без них командлет не будет функционировать. Если вы забыли указать обязательный параметр, оболочка, скорее всего, потребует указать недостающую информацию:

PS C:\> new-aduser

cmdlet New-ADUser at command pipeline position 1

Supply values for the following parameters:

Name:

Другие параметры являются опционными – их легко отличить по тому, что и сам параметр и его значение заключены в квадратные скобки:

[-Include <string[]>]

Такая форма значения как string[], с пустыми квадратными скобками сразу после значения говорит о том, что параметр может иметь больше одного значения. Один из способов придать параметру несколько значений – напечатать эти значения в ряд, разделяя запятой.

Многие параметры имеют имя, что означает, что вы обязательно должны указывать и имя самого параметра, и его значение. Их можно узнать по отсутствию квадратных скобок вокруг имени параметра, даже если он является опционным:

[-Exclude <string[]>]

Другими словами, если вы захотите использовать этот параметр, вы обязательно должны указать его имя. Перед именем параметра всегда ставится дефис, а значение всегда отделяется от имени пробелом:

-Exclude "*.dll"

Помимо этого, есть так называемые позиционные параметры. Их отличительной особенностью является наличие квадратных скобок только вокруг имени параметра:

[-Path] <string[]>

Позиционные параметры позволяют печатать только значение, при условии, что печатаете вы в соответствующем месте (позиции). То есть, если ранее был напечатан параметр –LiteralPath, вы можете напечатать просто его значение на первой позиции:

Get-ChildItem *.*

Вы можете определить верную позицию, вызвав полную справку с помощью команды –full help:

-Path <string[]>

Specifies a path to one or more locations

Required? false

Position? 1

Default value

Accept pipeline input? true (ByV

Accept wildcard characters? false

Когда вы набираете имя параметра, вам необязательно печатать его полностью. Достаточно набрать лишь первые буквы, чтобы Windows PowerShell определила, какой именно параметр вы имеете в виду. Например, вместо того, чтобы набирать –computerName, вы можете напечатать просто –comp, или даже –c, если командлет не имеет других параметров, имя которых начинается с буквы c.


Расширение оболочки


Командлеты, присутствующие по умолчанию в оболочке, не являются единственными доступными для вас командлетами. Microsoft, так же, как и сторонние разработчики программного обеспечения, могут создавать дополнительные командлеты и провайдеры PSDrive, и предоставлять их вам в виде оснасток или модулей. Управление оснастками осуществляется с помощью набора командлетов, название которых включает существительное PSSnapin:

·       Get-PSSnapin

·       Add-PSSnapin

·       Remove-PSSnapin

Оснастки, как правило, следует устанавливать с использованием установочного пакета, так как они должны быть зарегистрированы в оболочке. Чтобы увидеть список зарегистрированных оснасток (кроме тех, что установлены по умолчанию), запустите команду:

Get-PSSnapin –registered

О прочих возможностях командлета Get-PSSnapin можно узнать в справочнике.

Модули, в свою очередь, могут не требовать установки, хотя это зависит от того, какие именно функции выполняет тот или иной модуль. Windows PowerShell располагает тремя основными командлетами для управления модулями:

• Import-Module

• Remove-Module

• Get-Module

Чтобы увидеть список установленных модулей, запустите команду:

Get-Module –list

Windows PowerShell ищет модули в конкретных папках. Чтобы увидеть, в каких папках осуществляется поиск, запустите команду:

Type Env:\PSModulePath


Вы можете модифицировать эту переменную среды, изменяя или добавляя папки, в которых хранятся модули. Обратите внимание, что расширения иногда могут изменять командлеты, присутствующие в оболочке по умолчанию, тем самым меняя их поведение.


Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования