Знакомство с Windows PowerShell




страница1/3
Дата02.12.2016
Размер2.84 Mb.
Просмотров683
Скачиваний0
  1   2   3


Знакомство с
Windows PowerShell
Windows PowerShell — это новая командная оболочка Windows, разработанная в первую очередь для системных администраторов. Она включает интерактивную командную строку и среду исполнения сценариев, которые можно использовать вместе или по отдельности.
В Windows PowerShell реализована новая концепция командлетов — простых, узко специализированных средств командной строки, встроенных в оболочку.
Командлеты можно использовать и по отдельности, однако по-настоящему их достоинства проявляются тогда, когда эти простые средства используются в комбинации друг с другом для решения сложных задач. Windows PowerShell включает более ста основных командлетов, к тому же есть возможность создавать собственные командлеты и обмениваться ими с другими пользователями.
Как и многие другие оболочки, Windows PowerShell обеспечивает доступ к файловой системе на компьютере. Кроме того, в состав оболочки Windows
PowerShell входят поставщики, позволяющие столь же легко работать с другими хранилищами данных, такими как реестр и хранилища сертификатов цифровых подписей.
В отличие от большинства оболочек, которые принимают и возвращают текст, оболочка Windows PowerShell, разработанная на основе среды CRL .NET и платформы .NET Framework, принимает и возвращает объекты .NET. Структуры папок, или службы, к которым обращаются сценарии PowerShell, в сущности, являются экземплярами объектов, которые представляют эти папки и службы.
Конвейерная обработка позволяет получить результаты работы одной команды и передать их на вход следующей команды при композиции. Например, команда get- mailbox используется для получения списка почтовых объектов, которыми можно впоследствии манипулировать самыми разными способами. Команда get-mailbox возвращает не список названий почтовых ящиков; а список объектов, которые представляют собой почтовые ящики. В этом и состоит отличие рассматриваемого
продукта от других командных оболочек, которые способны только обрабатывать тексты. Таким образом, PowerShell по своей мощности и эффективности намного превосходит традиционные командные оболочки.

Установка
Windows PowerShell
Для оболочки Windows PowerShell может быть установлена в операционных системах Windows XP с пакетом обновления 2, Windows 2003 с пакетом обновления 1 или более поздних версия Windows. Кроме того, для работы
PowerShell требуется Microsoft .NET Framework 2.0. Следует обратить внимание на то, что Microsoft .NET Framework в настоящее время не поддерживается в Core режиме сервера, поэтому установка PowerShell в Server Core на данный момент невозможна.
Установка PowerShell отличается для Windows Server 2008 и более ранних версий
Windows. Чтобы установить оболочку Windows PowerShell в Windows XP,
Windows Server 2003 или Windows Vista необходимо загрузить файл установки
Windows PowerShell (имя этого файла различается в зависимости от платформы, операционной системы и языкового пакета) и следовать инструкциям мастера установки.
Чтобы выполнить автоматическую установку, нужно ввести:
/quiet
Например, для русскоязычной 32-разрядной версии PowerShell данная команда примет вид:
PowerShellSetup_x86_ru.exe /quiet
В 32-разрядных версиях Windows оболочка Windows PowerShell устанавливается по умолчанию в каталог %SystemRoot% \System32\WindowsPowerShell\v1.0. В 64- разрядных версиях Windows 32-разрядная версия Windows PowerShell устанавливается в каталог %SystemRoot%\SystemWow64\WindowsPowerShell\v1.0, а 64-разрядная версия Windows PowerShell устанавливается в каталог
%SystemRoot%\System32\WindowsPowerShell\v1.0.

В Windows Server 2008 PowerShell включен в состав дистрибутива, поэтому для установки его достаточно добавить в диалоговом окне выбора возможностей
(Select Features) оснастки «Диспетчер Сервера». Вид данного диалогового окна приведен на рисунке 1.
Рисунок 1. Установка PowerShell в Windows Server 2008
При этом автоматически будут добавлены возможности Microsoft .NET
Framework.

Политики выполнения

Сценарии обеспечивают пользователям оболочки Windows PowerShell широчайшие возможности, но их можно использовать со злым умыслом. Для защиты пользовательских данных и целостности операционной системы в оболочке Windows PowerShell реализованы некоторые средства обеспечения безопасности, в том числе политика выполнения.
Политика выполнения оболочки Windows PowerShell определяет, можно ли выполнять сценарии, и если да, должны ли они быть подписаны цифровой подписью. Кроме того, она определяет, можно ли загружать конфигурационные файлы.
Политика выполнения по умолчанию (Restricted) обеспечивает максимальную защиту из всех политик. Она не разрешает выполнять сценарии и загружать какие- либо конфигурационные файлы, в том числе профиль Windows PowerShell. Тем не
менее, при этом можно работать с оболочкой Windows PowerShell в интерактивном режиме.
Если нужно выполнять сценарии или загружать конфигурационные файлы, политику выполнения можно изменить. Чтобы получить сведения об этом и соответствующие инструкции, выполните следующую команду: get-help about_signing
Чтобы вывести активную политику выполнения, введите следующую команду: get-executionpolicy
Для изменения политики выполнения используйте командлет Set-ExecutionPolicy.
Например, чтобы сделать действующей политикой выполнения политику
RemoteSigned, введите следующую команду: set-executionpolicy remotesigned
Если установлена политика выполнения RemoteSigned, PowerShell не будет запускать неподписанные сценарии, загруженные из Интернета (включая электронную почту и программы мгновенного обмена сообщениями).
Если попытаться выполнить загруженный сценарий, PowerShell выдаст такое сообщение об ошибке:
Нельзя загрузить файл C:\remote.ps1. Файл C:\remote.ps1 не содержит цифровой подписи. Сценарий не будет выполнен.
Более подробные сведения, см. в разделе "Get-Help about_signing"
Перед выполнением сценария, просмотрите исходный код, чтобы убедиться в его надежности. Сценарии позволяют сделать то же, что и исполняемые программы.
Для выполнения неподписанного сценария необходимо будет его разблокировать с помощью свойств файла в оболочке Windows. Если файл сценария имеет цифровую подпись, но ее издатель не помечен как надежный, PowerShell выполнит сценарий с запросом подтверждения.
Политика выполнения Windows PowerShell хранится в реестре Windows и не удаляется даже при переустановке оболочки Windows PowerShell.


Обзор возможностей
Windows PowerShell
В любом интерфейсе командной строки (CLI), к которым относится и Windows
PowerShell, для получения информации используется подход основанный на вводе команд. Перед использованием команд необходимо знать их имена. Хотя можно вводить сложные команды, необходимо ознакомиться с наиболее употребительными командами и параметрами команд.
Большинство интерфейсов командной строки не содержит структур, которые могли бы помочь пользователю освоить интерфейс. Так как интерфейсы командной строки были первыми оболочками операционных систем, многие имена команд и параметров выбирались произвольно. Лаконичные имена команд обычно использовались для большей ясности. Хотя в большинство CLI встроены справочные системы и стандарты построения команд, эти интерфейсы обычно разрабатывались с учетом совместимости с более ранними командами, так что набор команд до сих пор оформлен по решениям, сделанным десятилетия тому назад.
Оболочка Windows PowerShell сконструирована таким образом, чтобы пользователь мог воспользоваться знаниями, полученными при работе с более ранними интерфейсами командной строки. Необходимо подробно рассмотреть некоторые базовые средства и концепции, которые можно использовать для быстрого изучения оболочки Windows PowerShell. Эти средства и концепции включают в себя: использование команды Get; использование Cmd.exe и команд ОС UNIX; использование внешних команд; использование функции автозавершения при помощи клавиши TAB; использование команды Get-Help.

Работа с объектами

В отличие от традиционных команд с интерфейсом командной строки,
командлеты оболочки Windows PowerShell предназначены для работы с объектами, представляющими собой структурированную информацию, являющуюся более чем строкой символов на экране. Вывод команды всегда содержит дополнительную информацию, которую при необходимости можно использовать.
Если ранее использовались средства обработки текста для обработки данных командной строки, то при их использовании в оболочке Windows PowerShell их функционирование выглядит несколько иначе. В большинстве случаев для извлечения специальной информации нет необходимости в применении средств обработки текстовых данных. Получить доступ к данным можно непосредственно с помощью обычных команд обработки объектов оболочки Windows PowerShell.
С технической точки зрения объект .NET — это экземпляр класса .NET, состоящий из данных и операций, определенных для этих данных. Объект можно рассматривать как сущность, имеющую свойства (характеристики сущности) и методы (действия, которые можно выполнять над сущностью).
Например, при возврате службы средствами оболочки Windows PowerShell на самом деле возвращается объект, представляющий соответствующую службу. При просмотре сведений о службе отображаются свойства объекта-службы. При запуске службы, то есть при изменении ее свойства Status на «started», выполняется метод объекта-службы.
Все объекты одного типа имеют одни и те же свойства и методы, однако значения свойств каждого экземпляра объекта могут быть разными. Например, каждый объект-служба имеет свойства Name и Status. Однако имя и статус одной службы могут отличаться от имени и статуса любой другой службы.
Получить сведения об объектах несложно. Чтобы узнать, объект какого типа получен командлетом, передайте результат выполнения команды «get» команде
Get-Member с помощью оператора конвейерной обработки (|). Например, следующая команда передает объекты, возвращенные командой Get-Service, команде Get-Member:

Get-service | Get-member
Примерный результат команды Get-Member представлен на рисунке 2.
Отображаются сведения об объекте-службе, в том числе имя типа объекта
(System.ServiceProcess.ServiceController) и список его свойств и методов.
Рисунок 2. Результат работы командлета Get-Member.
Для получения более подробной справки по работе со свойствами и методами конкретного типа объекта можно, затем, воспользоваться справочной системой
MSDN или .NET Framework SDK.

Работа с командлетами

В оболочку PowerShell встроено свыше 100 команд. Можно создавать дополнительные команды, но при этом следует пользоваться языком стандарта
.NET, таким как Visual Basic .NET или C#. Каждый вариант команды представляет
собой комбинацию «глагол-существительное»; объясняется это тем, что разработчики хотели использовать единообразную схему именования и тем самым облегчить изучение, а также расширение оболочки PowerShell. Глагол указывает на действие, которое предстоит совершить, а существительное — на тип объекта, на который будет направлено действие. К примеру, команда Get-ChildItem считывает список элементов текущего рабочего каталога или контейнера, например реестра. Для выполнения команды нужно ввести ее в командной строке
PowerShell и нажать клавишу ввода. Результаты отображаются под командной строкой.
Если неизвестно, существует ли команда для решения задачи, которую предстоит выполнить, можно просмотреть список всех команд, выполнив команду Get-
Command. Список выводимых команд можно уменьшить при помощи шаблона с подстановочными символами:
Get-Command get*
На рисунке 3 отображен результат работы данной команды; где можно увидеть имена команд и синтаксис, без описания того, что именно делает соответствующая команда. Для получения этих сведений можно воспользоваться командой Get-Help.
Рисунок 3. Результат работы команды Get-Command.

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

Средства ускорения ввода команд

К средствам ускорения ввода команд в PowerShell относится автозавершение строки с помощью клавиши Tab, использование истории команд с помощью клавиши F7 и задание псевдонимов.
Для автоматического ввода имени файла или пути из имеющихся возможностей выбора можно ввести часть имени и нажать клавишу Tab. Оболочка Windows
PowerShell автоматически расширит имя до первого найденного ею совпадения.
При повторении нажатия клавиши Tab производится циклический переход по имеющимся возможностям выбора.
Автоматическое завершение имен команд выглядит несколько по-иному. Для использования расширения табуляции в имени команды необходимо ввести глагол и дефис, следующий за глаголом. Повторные нажатия Tab позволят пройти по списку команд, начинающихся с введенной строки.
Для навигации по истории введенных команд можно пользоваться стрелками вверх и вниз, а можно воспользоваться клавишей F7. Результат вызова данной функции показан на рисунке 4.

Рисунок 4. Просмотр истории команд.
Механизм псевдонимов связывает вводимое имя команды с другой командой. К примеру, внутренняя функция Clear-Host, очищает окно для выводимых данных.
Если в командной строке ввести команду cls или clear, Windows PowerShell интерпретирует это как псевдоним для функции Clear-Host и выполняет функцию
Clear-Host.
Далее приводится краткий список общих команд Cmd.exe и ОС UNIX, которые можно использовать в оболочке Windows PowerShell: cat dir mount rm cd echo move rmdir chdir erase popd sleep clear h ps sort cls history pushd tee copy kill pwd type del lp r write diff ls ren
Для получения действительного имени собственной команды Windows PowerShell, можно для этого использовать команду Get-Alias. Пример выполнения этой команды показан на рисунке 5.

Рисунок 5. Использование команды Get-Alias.
Оболочка Windows PowerShell предоставляет набор стандартных псевдонимов, основанных на сокращенных именах для обычных глаголов и существительных.
Это позволяет сформировать базовый набор легко читаемых псевдонимов для общих команд, если известны сокращенные имена. Например, в стандартных псевдонимах глагол Get сокращается до g, глагол Set сокращается до s, существительное Item сокращается до i, существительное Location сокращается до l и существительное Command сокращается до cm.
Для создания создания псевдонима в рамках текущего сеанса можно воспользоваться командой Set-Alias. К примеру, чтобы создать псевдоним cnt для обращения к Get-Content, нужно выполнить команду
Set-Alias cnt Get-Content
После этого всякий раз, когда потребуется выполнить команду Get-Content, можно будет использовать псевдоним cnt. Этим псевдонимом можно будет пользоваться до завершения сеанса (т.е. до закрытия оболочки PowerShell). Необходимо учитывать, что при определении псевдонима возможность включения параметров не предусмотрена; можно использовать только имя команды.

Использование переменных и типов данных

Оболочка Windows PowerShell позволяет создавать переменные, или, другими словами, именованные объекты, — чтобы сохранять в них данные вывода для последующего использования. Имя переменной всегда начинается со знака $ и может содержать любые буквы и цифры, а также знак подчеркивания.
Чтобы создать переменную, нужно ввести допустимое имя переменной. Создать
переменную и присвоить ей какое-либо значение можно одним действием.
Windows PowerShell создает переменную, только если она еще не существует; в противном случае указанное значение присваивается существующей переменной.
Для сохранения текущего местоположения в переменной $loc следует ввести:
$loc = Get-Location
После ввода этой команды ее вывод не отображается, потому что он отправляется в переменную $loc. Отображение вывода в оболочке Windows PowerShell представляет собой побочный эффект отправки данных: если не указано иное направление отправки, то данные всегда отправляются на экран.
Для отображения сведений о содержимом переменных можно воспользоваться командлетом Get-Member. Передача переменной $loc по конвейеру командлету
Get-Member показывает, что это объект класса PathInfo, также как и вывод командлета Get-Location.
В некоторых случаях может потребоваться явно указать тип данных для переменной. Для этого используется оператор квадратные скобки. Следующий сценарий определит две переменные разных типов:
[int] $i = 1
[double] $d = 1
На рисунке 6 показаны типы данных этих переменных. Типом данных для переменной PowerShell может выступать любой тип .NET Framework.

Рисунок 6. Явное задание типов переменных.

Действия со строками

Администраторы часто работают с данными в форме строк. В PowerShell это простой процесс. Так, в следующем примере строка «cat» назначается переменной
$a, затем отображается результат, то есть cat:
$a = "cat"; $a
Поскольку строка назначается переменной $a, PowerShell автоматически приводит
$a к типу System.String. Можно использовать метод GetType и его свойство
FullName, чтобы определить тип данных переменной. Например, команда a.GetType ().FullName возвращает результат System.String. Чтобы объединить строки, используется оператор конкатенации (+). Например, следующий программный код добавляет строку " & dog " (вместе с пробелами) к переменной $a, а затем отображает результат, то есть cat & dog:
$a = $a + " & dog "; $a

В строку можно добавить числовое значение. При этом число автоматически преобразуется в строку. Например, следующий программный код добавляет 10 к переменной $a, а затем выводит на экран результат, cat & dog 10:
$a = $a + 10; $a
Если проверить тип данных, то это будет String, то есть произойдет неявное преобразование типа.

Действия с числами

Работать с числовыми данными в PowerShell так же просто, как со строковыми.
Числовые значения назначаются как строковые, единственное различие — числовые значения не заключаются в кавычки. Если указано числовое значение,
PowerShell автоматически присваивает значению один из четырех типов данных:

System.Int32, 32-разрядное целое (псевдоним [int]).

System.Int64, 64-разрядное целое (псевдоним [long]).

System.Double, 8-байтное вещественное число с плавающей запятой
(псевдоним [double]).

System.Decimal, 12-байтное вещественное число (псевдоним [decimal]).
Decimal, в отличие от Double, использует точную арифметику.
Следующие инструкции демонстрируют, как PowerShell назначает типы данных числовым значениям:
$a = 1234; $a
$a.GetType().FullName
$a = 12345678910; $a
$a.GetType().FullName
$a = 1234.5678; $a
$a.GetType().FullName
$a = 1234.5678d; $a
$a.GetType().FullName
Как показано на рисунке 7, PowerShell назначает тип данных первым трем
переменным в соответствии с этим значением.
Рисунок 7. Неявное преобразование числовых типов данных.
Однако, чтобы назначить тип Decimal, необходимо прямо указать символ d после числа; в противном случае PowerShell обрабатывает значение как тип Double. Для соединения числовых значений можно использовать знак «плюс». При этом числовые значения складываются, а не сцепляются, как строковые. Например, следующие инструкции назначают значение 1234 переменной $a, а затем добавляют 1.5678 к $a:
$a = 1234; $a
$a.GetType ().FullName
$a = $a + 1.5678; $a
$a.GetType ().FullName
Как показано на рисунке 8, PowerShell складывает два значения и автоматически преобразует тип данных переменной из Int32 в Double.

Рисунок 8. Автоматическое преобразование числовых типов данных.
Если попытаться сложить строку, которая не является числом, с числовым значением, будет выдано сообщение об ошибке.

Действия с массивами

Массивы представляют собой коллекции типа System.Object []. Символы [] после типа данных показывают, что это массив со многими значениями. PowerShell автоматически назначает массивам тип Object []. К примеру,
$a = "a","b","c"; $a создает массив с тремя строковыми переменными, а затем возвращает результаты, как показано на рисунке 9.
Рисунок 9. Инициализация массива строк
Для доступа к отдельным элементам массива используется индекс. Индексы массивов начинаются с 0, поэтому для доступа к первому элементу указывается имя массива, за которым следует индекс в скобках, например
$a [0]
Эта инструкция возвращает результат a. Если нужно обратиться к более чем одному значению, просто укажите соответствующее число инструкций.
Например, инструкции

$a [1]; $a [2] возвращают результаты b c
Добавить элемент в массив можно с помощью оператора «плюс». Например, программный код
$a = $a + "d"; $a добавляет d к массиву $a, а затем отображает результаты:
Рисунок 10. Добавление элемента к массиву
Когда элемент d добавляется к массиву, PowerShell назначает ему следующий по порядку индекс (3). Числовые значения в массив ввести так же просто, как и строковые значения. Например, команда
$a = 1,2,3; $a возвращает результаты
Рисунок 11. Тип массива
И вновь PowerShell назначает массиву тип Object []. В массив можно ввести числовое значение любого типа. В следующем примере назначается целочисленное значение (1) и два значения decimal (2.2 и 3.33) массиву $a.
$a = 1,2.2,3.33; $a

$a[0].GetType().FullName
$a[1].GetType().FullName
Результат работы данного сценарии показан на рисунке 12. В действительности в массив можно ввести значение любого типа .NET Framework. Типы данных отдельных элементов остаются специфичными для этих значений. Получить сведения о типах отдельных значений можно с помощью следующих инструкций:
$a[0].GetType().FullName
$a[1].GetType().FullName
В каждой инструкции применяется индекс для идентификации элемента, а затем метод GetType, чтобы извлечь тип элемента. Метод GetType определен для всех типов данных и позволяет получать сведения о типе из сценария.
Рисунок 12. Массив из элементов разных типов.
Например, следующий программный код формирует массив, в который входит числовое значение (10), строковое значение («cat») и значение date-time (текущие время и дата, полученные с помощью команды Get-Date):
$a = 10, "cat", (Get-Date); $a
$a.GetType().FullName
Результаты показаны на рисунке 13.

Рисунок 13. Изменение типа элемента массива.
Чтобы изменить значение в массиве, нужно указать индекс элемента и назначить новое значение, например:
$a[2] = "dog"; $a
$a[2].GetType().FullName
PowerShell заменяет значение и назначает правильный тип, как показано на рисунке 13.


Поделитесь с Вашими друзьями:
  1   2   3


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

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


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