Поиск

Полнотекстовый поиск:
Где искать:
везде
только в названии
только в тексте
Выводить:
описание
слова в тексте
только заголовок

Рекомендуем ознакомиться

'Документ'
Освоение и дальнейшее развитие потенциала северных территорий России невозможно без создания современных комфортных условий проживания и трудовой дея...полностью>>
'Документ'
Реалізацію в університеті Комплексної програми інформатизації вважати одним з пріоритетних напрямків діяльності ректорату, деканатів, кафедр та інших...полностью>>
'Урок'
Рассказ был написан в 1971 году, за три года до смерти В. Шукшина, а случай, о котором идёт речь в рассказе, произошёл, когда автору рассказа было 11-...полностью>>
'Кодекс'
Установление случаев, при которых может быть установлен особый правовой режим использования земель в местах традиционного проживания и хозяйственной д...полностью>>

Microsoft switzerland

Главная > Документ
Сохрани ссылку в одной из сетей:

MICROSOFT SWITZERLAND

1 октября 2007

Франк Кох (БЕРН)

Разработчик и пропагандист платформы

Windows PowerShell

Чего следует ожидать от этой короткой работы –
Попытка предисловия

Зачем написана эта книга

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

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

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

  • Первые шаги с Windows PowerShell

  • Базовые принципы Windows PowerShell

Чтобы получить реальную пользу от этой книги, вы должны иметь доступ к ПК, на котором будете делать упражнения во время чтения. Единственное предварительное условие состоит в том, что это должен быть ПК с установленным Windows PowerShell 1.0, который поставляется бесплатно в составе Windows XP SP2. Сведения о загрузке и установке PowerShell см. на указанных ниже веб-сайтах.

Другие источники информации в сети Интернет

Вводная страница Windows PowerShell, содержащая ссылку на загрузку: www.microsoft.com/PowerShell. Здесь вы также сможете найти другие ссылки на очень полезные Интернет-трансляции, книги и другие форумы поддержки.

Полезные блоги о Windows PowerShell можно найти по адресу http://blogs.msdn.com/PowerShell/. Здесь можно прочитать о методах программирования сценариев и найти практические примеры. Абсолютно любые.

В Швейцарии вы можете также найти сведения на немецком языке в блоке команды ITPro по адресу http://blogs.technet.com/chITPro-DE. В нем можно найти ссылки на немецкие Интернет-трансляции о Windows PowerShell и загрузить примеры к книге из архива за март/апрель 2007 г..

Много полезной информации о Windows PowerShell на русском языке можно найти в блогах Андрея Бешкова /abeshkov/default.aspx, Василия Гусева и Дмитрия Сотникова /blogs/dmitrysotnikov/default.aspx. Переводчик этой книги тоже иногда пишет о PowerShell в своем блоге /.

Содержание

Зачем написана эта книга 3

Другие источники информации в сети Интернет 3

Первое впечатление о Windows PowerShell 6

Расширенные возможности вывода: конвейеры 8

Вводные упражнения с объектами Windows PowerShell 9

Работа с процессами 9

Вывод в файлы формата TXT, CSV или XML 10

Вывод в цвете 11

Проверка условий с помощью командлета if 12

Вывод в виде HTML 14

Работа с файлами 16

Поиск информации об объектах с помощью Get-Member 17

Удаление файлов 20

Создание папок 20

Если у вас есть время … 23

Windows PowerShell как машина обработки произвольных объектов 25

Объекты WMI 25

Работа с объектами .NET и XML 27

Работа с COM-объектами 29

Работа с журналами сообщений 32

Сценарии-решения к упражнениям в этой книге 34

Примеры к Windows PowerShell – от простых к сложным 38

Теоретические принципы Windows PowerShell 40

Windows PowerShell – краткое введение 40

Цели разработки Windows PowerShell 40

О тексте, разборе текста и объектах 41

Новый язык сценариев 41

Команды Windows и служебные программы 42

Интерактивная среда 42

Поддержка сценариев 42

CMD, WScript или PowerShell? Что выбрать? 43

Windows PowerShell 1.0 43

Безопасность при использовании сценариев 44

Windows PowerShell в работе

Windows PowerShell является свободно распространяемым приложением к семейству операционных систем Windows XP и выше, его можно загрузить с веб-сайта Microsoft по адресу http://www.microsoft.com/powershell. Необходимым предварительным условием является наличие среды .NET Framework 2.0, если она еще не установлена, ее следует загрузить и установить отдельно. Сам по себе пакет Windows PowerShell имеет относительно малый объем, около 1,5 МБайт, и легко устанавливается автоматически через стандартные каналы распространении программного обеспечения. Следует лишь учитывать, что для каждой версии и архитектуры Windows используется своя версия Windows PowerShell.

После установки Windows PowerShell помещает себя в меню Start, доступ к ней можно получить, щелкнув по пиктограмме быстрого доступа или введя «PowerShell» в окно для запуска команд Windows.

Первое впечатление о Windows PowerShell

Чтобы получить первое впечатление, запустите одновременно Windows PowerShell и классическую командную строку CMD из меню Start. На первый взгляд обе командные оболочки выглядят очень похоже – за исключением разного цвета:

Рисунок 1: Классическая командная строка CMD

Рисунок 2: Windows PowerShell

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

  • Выберите нужный текст с помощью мыши

  • Нажмите правую кнопку мыши (= копирование)

  • Поместите курсор в нужное место

  • Нажмите правую кнопку мыши (= вставка)

Попробуйте сделать это сами. Скопируйте первую строку текста в каждой из оболочек (то есть «Copyright (c) 2006 Microsoft Corporation») и вставьте ее в качестве командной строки. Не беспокойтесь о сообщениях об ошибках, которые появятся после того, как вы нажмете Enter. Привыкайте к этим упражнениям с кнопками мыши, позднее вам придется часто их использовать.

Несмотря на то, что внешне эти оболочки командной строки одинаковы, содержимое и функции каждой из них сильно различаются. Самый простой способ понять это – взглянуть на интерактивную справку. Первый же взгляд ясно покажет, что Windows PowerShell предоставляет значительно больше функций, чем CMD; более 100 команд, также называемых командлетами (пишется «cmdlets»). Сама CMD содержит всего несколько команд, поэтому для нее было разработано множество вспомогательных программ. Поскольку каждая из этих программ CMD имеет собственный синтаксис, опытные эксперты по CMD наизусть знают множество разных команд и их логику. Для командлетов синтаксис и логика единообразны.

Команды Windows PowerShell следуют определенным правилам именования:

  • Команды Windows PowerShell состоят из глагола и существительного (всегда в единственном числе), разделенных тире. Команды записываются на английском языке. Пример:
    Get-Help вызывает интерактивную справку по синтаксису Windows PowerShell

  • Перед параметрами ставится символ «-»:
    Get-Help -Detailed

  • В Windows PowerShell также включены псевдонимы многих известных команд. Это упростит вам знакомство и использование Windows PowerShell. Пример:
    Команды help (классический стиль Windows) и man (классический стиль Unix) работают так же, как и Get-Help.

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

Вместо help или man в Windows PowerShell можно также использовать команду Get-Help. Ее синтаксис описан ниже:

  • Get-Help выводит на экран справку об использовании справки

  • Get-Help * перечисляет все команды Windows PowerShell

  • Get-Help команда выводит справку по соответствующей команде

  • Get-Help команда -Detailed выводит подробную справку с примерами команды

Использование команды help для получения подробных сведений о команде help: Get-Help Get-Help -Detailed.

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

Расширенные возможности вывода: конвейеры

Как было сказано выше, Windows PowerShell является объектно-ориентированной командной оболочкой. Это означает, что вводимые и выводимые данные команд как правило являются объектами. Поскольку человек не может читать объекты, Windows PowerShell «транслирует» объекты для вывода на экран в текст (профессионалы могут даже найти в Windows PowerShell команды, которые позволят настроить вывод в соответствии с их нуждами). На связывание команд указывает команда конвейера: |

Эту связку можно использовать также для создания собственной книги Windows PowerShell. Get-Help * | Get-Help -Detailed сделает это для вас: команда Get-Help * создаст список известных команд, который будет подан на вход команды Get-Help -Detailed. Она выведет очень много информации, вывод можно будет прервать комбинацией клавиш CTRL-C.

Чтобы иметь возможность использовать результат «справочника» позднее, было бы разумно перенаправить выход в файл, а не выводить данные на экран. Windows PowerShell имеет для этого специальную команду Out-File, более известную в варианте символа «>».

Теперь создайте собственный «файл книги». Введите соответствующую команду: Get-Help * | Get-Help -Detailed | Out-File c:\Powershell-Help.txt или даже Get-Help * | Get-Help -Detailed > C:\PowerShell-Help.txt. Учтите, что вы должны иметь права на запись в соответствующий каталог (в данном случае C:\ ).

Откройте свой первый файл справки в Блокноте и используйте его как интерактивную справку в последующей работе. Если вы когда-либо будете искать команду, Get-Help поможет вам и в этом. Если вы хотите что-то отсортировать, попробуйте найти что-то подходящее, используя команду Get-Help Sort*. Get-Help будет искать соответствующую команду в репозитории команд Windows PowerShell. Поскольку все команды начинаются с глагола, мы легко можем структурировать поиск, используя форму Get-Help соответствующий английский глагол *. Если вы еще не знаете, символ «*» означает поиск по шаблону. Он используется, если после текста для поиска может идти все, что угодно, а мы хотим найти все, что начинается с нашего текста для поиска.

После того, как вы найдете команду (например, пусть это будет Sort-Object), просто вызовите еще раз Get-Help, теперь с соответствующей командой и параметром -Detailed, чтобы найти примеры использования этой команды:

Get-Help Sort-Object -Detailed.

Теперь вы должны быть в состоянии решить свою проблему.

Вводные упражнения с объектами Windows PowerShell

Если вы никогда раньше не работали с объектами, примеры ниже позволят вам понять многочисленные возможности этого мира. Объекты не являются чем-то новым в программировании, но в области сценариев ничего подобного еще не было. Если вы заинтересовались работой с объектами, подробную дополнительную литературу вы сможете найти в MSDN по адресам http://msdn.microsoft.com и http://www.microsoft.com/switzerland/msdn/ru/default.mspx. Давайте рассмотрим объекты на примере объекта процесса «process». Если слово «процесс» для вас ничего не значит, подумайте о том, что вы видите на экране, когда вызываете Диспетчер задач (Task Manager). Если вы заинтересовались объектом «process», на страницах MSDN вы найдете информацию о нем.

Работа с процессами

Команда Get-Process выводит список всех процессов в вашей системе. Этот список может быть очень длинным. Для сортировки списка вы можете воспользоваться другим командлетом: Sort-Object. По умолчанию Sort-Object имеет фиксированный порядок сортировки (по возрастанию), который можно изменить с помощью параметра -Descending. В качестве аргумента можно указать свойство объекта, например, используемое время процессора (CPU).

A1: Сейчас ваша задача состоит в создании списка всех процессов и его сортировке в порядке убывания в соответствии с используемым временем процессора. Вы уже знаете, как это сделать: Get-Process, Sort-Object и конвейер (|).

Подсказка: CPU не является параметром Sort-Object, это аргумент, который вы можете использовать при сортировке. Поэтому он не имеет символа «-».

В следующем упражнении мы хотим немного ограничить список, чтобы с ним было проще работать. Мы используем команду Select-Object. Select-Object понимает несколько параметров (чтобы их узнать, воспользуйтесь командой Get-Help), но нам понадобятся только -First x и -Last y, с помощью которых можно узнать первые x или последние y объектов списка, например Select-Object -First 5. Командлет Select-Object не работает сам по себе, он ожидает исходных данных, передаваемых через конвейер.

A2: Создадим список первых 10 процессов по используемому времени процессора. Для этого возьмем результаты упражнения A1 и добавим к ним команду Select-Object. Существует два пути получить идеальное решение, в зависимости от того, как вы хотите отсортировать список. Давайте рассмотрим оба.

Подсказка: в одном из путей используется параметр -First, в другом -Last.

Мы используем это упражнение в качестве краткого введения в переменные. Говоря простым языком, в переменных хранятся все возможные значения, даже если они являются объектами. Здесь мы тоже сошлемся на дополнительную литературу, которую следует использовать для более глубокого изучения переменных. Сейчас нам нужно только знать, что переменные в PowerShell всегда должны начинаться с символа «$». Вы можете сохранить результат упражнения A2 в переменной, это позволит вам в любое время получать доступ к списку из 10 процессов. Получив текущий список и сравнив его со значением переменной, можно оценить изменения в системе. Присвоить значение переменной можно легко:

$a = get-process | sort-object CPU -de…

Многоточие в конце строки указывает, что выражение не дописано до конца. Если попытаться выполнить его в таком виде, PowerShell сообщит об ошибке. Закончите его самостоятельно.

A3: Назначьте переменной $P сокращенный список процессов из упражнения A2.

Подсказка: С помощью клавиши курсора «Стрелка вверх» можно вызвать последнюю использованную команду, а с помощью клавиши «Home» переместить курсор в начало строки, а затем ввести данные. Вывести содержимое переменной можно, просто напечатав в командной строке $P.

Рисунок 3: Содержимое переменной $P

Вывод в файлы формата TXT, CSV или XML

По умолчанию Windows PowerShell выводит результаты работы цепочки команд на экран. Все объекты преобразуются в текст, чтобы человек мог прочитать содержащиеся в них данные. Для этого используется команда Out-Host. Однако поскольку Windows PowerShell построена с расчетом на максимальную эффективность, эта команда добавляется автоматически и будет невидима, если вы не добавите ее явно. Существуют альтернативы команды Out-Host; их можно найти с помощью команды Get-Help Out*.

Вывести результаты в текстовый файл можно легко и быстро: Out-File имяфайла. Многие командные оболочки используют команду «>», которая поддерживается и в Windows PowerShell. Выводимые данные можно преобразовать не только в текстовый файл, но и в CSV или XML. После работы команды Out-Host специальные командлеты выполнят для вас и эту задачу. Эти командлеты имеют имена Export-CSV и Export-CliXML, оба они требуют в качестве аргумента имя файла. И да, конечно – если вы можете экспортировать, вы можете и импортировать. Для импорта файлов с целью просмотра используются команды Import-CSV и Import-CliXML.

A4: Возьмите переменную $P из упражнения A3 и сохраните ее содержимое в текстовый файл с именем «A4.txt». Затем сохраните содержимое $P в файл CSV с именем «A4.CSV», и наконец в файл XML с именем «A4.XML».

Подсказка: при использовании > не нужен символ |, который требуется только для командлетов, таких как Out-File, Export-CSV и т.д. Просмотрите результат, для этого можно воспользоваться Блокнотом (Notepad).

Вывод в цвете

Иногда бывает необходимо выделить результаты, сделав их удобнее для чтения. Это можно сделать, например, с помощью выделения цветом. Команда Write-Host распознает некоторые параметры, такие как -Foregroundcolor и -Backgroundcolor. Как вы думаете, какой результат получится после выполнения этой команды?

Write-Host "Red on blue" -Foregroundcolor red -Backgroundcolor blue

Вы можете угадать. Get-Help Write-Host -Detailed даст вам полный список возможных цветов. Также существуют определенные заранее сочетания: вы можете также привлечь внимание пользователя с помощью команды Write-Warning "error". Попробуйте сделать это прямо сейчас. С помощью этой команды вы можете окрасить все данные, выводимые процессами. Однако будет лучше, если вы раскрасите список в соответствии с дополнительными условиями. Давайте подробнее рассмотрим эту возможность.

Для простоты мы используем службы ПК, а не процессы. Если вы не знаете, что такое службы, посмотрите сведения о них, например, в MSDN. Просто скажем, что службы – это то, что показывается в окне Control Panel / Administrative Tools / Services. Что нам важно знать о службах, это то, что они имеют статус «запущена» или «остановлена» («started» или «stopped»), которое можно использовать для окрашивания выводимых данных. Но для начала просмотрим службы с помощью командлета Get-Service.

A5: Создайте список всех служб и отсортируйте их по статусу.

Подсказка: Используйте тот же метод, что и для сортировки процессов по используемому времени процессора, но применяйте команду get-service и «status» в качестве аргумента командлета Sort-Object.

Мы хотим вывести весь список красным цветом. В этом нам поможет командлет Write-Host. К сожалению, команда Get-Service | Write-Host -Foregroundcolor red не будет работать так, как мы ожидаем. Write-Host не дружит с другими командлетами и не принимает список объектов, который следует затем вывести нужным цветом. Команда Write-Host должна знать, какой атрибут каждого объекта следует выводить таким образом. Мы можем немного помочь ей с этим. Будем работать со списком объектов последовательно, используя цикл. Существует множество циклов, каждый из которых имеет свои особенности и области использования. Для наших нужд мы воспользуемся циклом ForEach-Object, который проходит по списку объектов и передает каждый объект по отдельности следующему за ним командлету. В цикле мы выбираем нужный объект с помощью сокращения $_, особого «служебного имени» PowerShell. Затем мы выбираем атрибут объекта, вот так: $_.имя-свойства. Давайте рассмотрим пример:

Get-Process | ForEach-Object { Write-Host $_.ProcessName $_.CPU}

Хотя Get-Process дает нам список процессов, в этом примере мы можем просмотреть только имя и используемое время процессора, так как сначала выводимые данные уходят в канал (|), а затем Write-Host извлекает из него только два атрибута каждого объекта. Если вы вызовете пример еще раз, не удивляйтесь результату: не все процессы используют время процессора, так что в определенных условиях строка может содержать только имя.

A6: Создайте список служб и выведите на экран только атрибуты имени и статуса. Воспользуйтесь ранее описанным циклом ForEach, но можете подумать и о других возможных решениях.

Теперь мы можем использовать параметры Write-Host для вывода в цвете.

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

Подсказка: Воспользуйтесь решением из A6 и добавьте параметры -Foregroundcolor и -Backgroundcolor.

Рисунок 4: Вывод имен и статусов служб красным цветом

Проверка условий с помощью командлета if

Мы пропустили еще одну вещь – проверку условий. Для этого существует множество вариантов, подходящих для различных сценариев. Однако сейчас, в этом введении, мы ограничимся командой If. Вы, возможно, уже знаете ее синтаксис из других вариантов использования, он довольно прост:

If (условие) {выполняемые команды}

Elseif (условие2) {выполняемые команды}

Else {выполняемые команды}

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

Для сравнения Windows PowerShell использует несколько операторов сравнения. Они все начинаются с «-» и обычно содержат аббревиатуру из двух латинских букв: -eq означает «equals», «равно». Наиболее важные операторы перечислены ниже:

-Eq

Равно

-Match

Сравнение по регулярному выражению

-Ne

Не равно

-Notmatch

Не совпадает с регулярным выражением

-Gt -Ge

Больше / Больше или равно

-Lt -Le

Меньше / Меньше или равно

Последнее упражнение в этом блоке содержит одновременно все варианты отслеживания статуса системы с использованием PowerShell. Все службы в системе сначала сортируются по статусу, а затем выводятся с выделением цветом: службы со статусом «stopped» красным, службы со статусом «running» зеленым.

A8: Вызовите список служб. Отсортируйте список по статусу и окрасьте выводимые данные в красный или зеленый цвет в зависимости от статуса службы «stopped» или «running».

Подсказка: Сначала используйте Sort-Object, как в предыдущих упражнениях. Затем воспользуйтесь циклом Foreach, но вместо того, чтобы просто использовать Write-Host, добавьте запрос If. Вы можете просмотреть статусы служб, используя как обычно $_.status; возможные значения «stopped» или «running».

О синтаксисе: Оператор If помещается в скобки (), а команда вывода в скобки {}. Игнорируйте теоретические параметры и для простоты не пользуйтесь запросом Elseif. Не забудьте конечную фигурную скобку в ForEach! Когда вы дойдете до конца строки >>, закройте ее, дважды нажав Return для выполнения введенных строк.

Еще раз выполните выражение, но на этот раз без командлета Sort-Object. Чтобы не вводить все данные второй раз, воспользуйтесь клавишами курсора.

Командлет Foreach-Object можно сократить до ForEach. Его можно сделать еще короче, но тогда вы не сможете прочитать его, не зная смысла значка. Поэтому здесь мы будем использовать варианты Foreach-Object или ForEach.

Рисунок 5: Цветные сведения о службах



Скачать документ

Похожие документы:

  1. Rket profilleri İSİm listesi A

    Документ
    ABB is a leader in power and automation technologies that enable utility and industry customers improve their performance while lowering environmental impact.
  2. Матеріали VI (XVIII) Всеукраїнської науково-практичної конференції Київ нтуу «кпі» 2010

    Документ
    Матеріали VІ (XVIII) Всеукр. наук.-практ. конф., Київ, 11-12 березня 2010 р.: тези доповідей / [редкол.: В.Г. Герасимчук (відпов. ред) та ін.].–К.: НТУУ «КПІ», 2010.
  3. А. Данные об эмитенте (3)

    Документ
    Место нахождения: Российская Федерация, Таймырский (Долгано-Ненецкий) автономный округ, г. Дудинка.Почтовый адрес: 663310, Российская Федерация, Красноярский край, г.
  4. Техническое задание на выполнение работ по содержательному наполнению, изданию и распространению журнала, ориентированного на соотечественников, п

    Техническое задание
    на право заключения государственного контракта на выполнение работ по содержательному наполнению, изданию и распространению журнала, ориентированного на соотечественников,
  5. Вища школа менеджменту кримський інститут бізнесу консалтингово-конфліктологічний центр центр розвитку освіти, науки та інновацій індустрія гостинності у країнах європи

    Документ
    Індустрія гостинності у країнах Європи / Матеріали ІІІ міжнародної науково-практичної конференції 4-6 грудня 2009 р. – Сімферополь: ВіТроПринт, 2009. – 176 с.

Другие похожие документы..