Обзор технологии Microsoft Windows PowerShellMicrosoft ® 1 Назначение PowerShell 2 Установка Windows PowesShell 6 Назначение PowerShell 7



Скачать 13.55 Mb.
страница5/27
Дата29.11.2016
Размер13.55 Mb.
Просмотров5689
Скачиваний0
ТипОбзор
1   2   3   4   5   6   7   8   9   ...   27

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


Командлеты, присутствующие по умолчанию в оболочке, не являются единственными доступными для вас командлетами. 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

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


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


Акт передачи выходных данных одного командлета во входные данные другого командлета называется конвейеризацией. Возможно, в других оболочках вам уже приходилось использовать конвейер. Например, это стандартная команда в Cmd.exe:

Dir | More

Здесь выходные данные команды Dir перенаправляются во входные данные команды More, которая создает постраничное отображение выходных данных.

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

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

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

Команды выполняются в одностороннем порядке – слева направо, а знак (“|”) является разграничителем между командлетами. Вы уже видели такие примеры, скажем, этот:



Get-Process | Format-List

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



Import-CSV c:\new_users.csv | New-ADUser –passThru | Enable-ADAccount.

Эта простая трехкомпонентная командная строка позволяет создать сотни новых пользователей Active Directory и активировать их аккаунты. При старых административных технологиях выполнение этой задачи могло потребовать десятки строк на скриптовом языке программирования; с командлетами и конвейером Windows PowerShell данная задача выполняется исключительно с помощью синтаксиса, который вы только что видели (конечно, если были выполнены некоторые предварительные условия, о которых вы узнаете чуть позже).



Windows PowerShell – это, конечно, не первая оболочка, в которой используется технология конвейера. В оболочках Unix уже давным-давно информация от команды к команде передается по конвейеру, да и в Windows (в частности, в Cmd.exe) используется нечто подобное. Проблема же с этими старыми оболочками заключалась в том, что они передавали от одной команды к другой не что иное, как текст. Например, представьте себе, что команда под названием Plist передает текстовое описание текущего процесса, которое выглядит приблизительно так:



Pid Name Image

--- ------------------------- -------------

092 Notepad notepad.exe

098 Windows Paint mspaint.exe

112 Calculator calc.exe

164 Windows PowerShell powersehll.exe

Предположим, вашей целью является завершить работу всех копий Windows Notepad. У вас есть команда под названием Kill, которая принимает ID (PID) процесса и завершает этот процесс. Но вы не можете просто запустить команду:



Plist | Kill

Для начала вы должны определить, какая строка выходных данных Plist относится к Notepad; затем вам нужно сократить эту строку до PID, который требуется команде Kill. В Unix все это осуществляется с использованием утилит, анализирующих текст, таких как Sed, Grep, и Awk. Например, обычной для Unix является такая команда:



ps auxwww | grep httpd

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

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

Что же это за элементы? По сути элемент – это самостоятельная структура данных, которая описывает часть функционирования операционной системы или серверной технологии. Процесс, например, является частью функционирования операционной системы. Сервис – это часть операционной системы. Файл или папка – часть операционной системы. Пользовательский аккаунт – это элемент операционной системы, точно так же, как и группа, организационная единица или сам домен. Вы можете воспринимать элемент как разновидность структурной единицы, с которой Windows PowerShell работает очень легко и быстро. Вместо того, чтобы давать оболочке команду «пропустить 10 символов в каждом ряду, чтобы найти колонку, которая содержит название процесса», вы можете просто дать ей задание обратиться к атрибуту Name, поскольку структура, используемая в конвейере, создана таким образом, что атрибуты становятся легкодоступными.




Поделитесь с Вашими друзьями:
1   2   3   4   5   6   7   8   9   ...   27


База данных защищена авторским правом ©nethash.ru 2019
обратиться к администрации

войти | регистрация
    Главная страница


загрузить материал