Реферат по предмету "Разное"


Microsoft switzerland

MICROSOFT SWITZERLAND1 октября 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 на русском языке можно найти в блогах Андрея Бешкова http://blogs.technet.com/abeshkov/default.aspx, Василия Гусева http://xaegr.wordpress.com и Дмитрия Сотникова http://www.itcommunity.ru/blogs/dmitrysotnikov/default.aspx. Переводчик этой книги тоже иногда пишет о PowerShell в своем блоге http://pwrshell.blogspot.com/. Содержание Зачем написана эта книга 3Другие источники информации в сети Интернет 3Первое впечатление о Windows PowerShell 6Расширенные возможности вывода: конвейеры 8Вводные упражнения с объектами Windows PowerShell 10Работа с процессами 10Вывод в файлы формата TXT, CSV или XML 11Вывод в цвете 12Проверка условий с помощью командлета if 13Вывод в виде HTML 15Работа с файлами 17Поиск информации об объектах с помощью Get-Member 19Удаление файлов 21Создание папок 21Если у вас есть время … 24Windows PowerShell как машина обработки произвольных объектов 26Объекты WMI 26Работа с объектами .NET и XML 28Работа с COM-объектами 30Работа с журналами сообщений 33Сценарии-решения к упражнениям в этой книге 35Примеры к Windows PowerShell – от простых к сложным 39Теоретические принципы Windows PowerShell 41Windows PowerShell – краткое введение 41Цели разработки Windows PowerShell 41О тексте, разборе текста и объектах 42Новый язык сценариев 42Команды Windows и служебные программы 43Интерактивная среда 43Поддержка сценариев 43CMD, WScript или PowerShell? Что выбрать? 44Windows PowerShell 1.0 44Безопасность при использовании сценариев 45 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 PowerShellGet-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: Цветные сведения о службах^ Вывод в виде HTML Пример A8 можно использовать для мониторинга серверов. Теперь было бы полезно упростить повторное использование выводимых данных. Вы уже знаете, как выводить данные в виде CSV и XML. Однако существует и еще одна возможность, иногда более полезная: HTML. Для этого используется командлет Convertto-Html. При этом данные выводятся не в виде файла, как в случае других командлетов, а в форме, позволяющей осуществлять редактирование непосредственно в канале. В конце можно перенести текст в файл, чтобы, например, вам было легче просматривать его в веб-браузере. С помощью серии мини-примеров мы покажем различные возможности, доступные с помощью Convertto-Html. A9: Преобразуем выходные данные Get-Service в HTML. Используем командлет Convertto-Html, который может работать непосредственно со списком объектов. Подсказка: Если список слишком длинный, его можно оборвать, нажав CTRL-C. A10: В конце воспользуемся командами, которые, как мы знаем, помещают выходные данные в файл «.\A10.html». Просмотрим этот файл. Подсказка: Можно использовать команду Invoke-Item .\a10.html для запуска веб-браузера по умолчанию и вывода в него файла прямо из PowerShell. Не забудьте правильно указать путь к A10.html. Если хотите, можете открыть файл с помощью Проводника. Convertto-Html позволяет ограничить выводимые данные, чтобы список не стал нечитаемым. На вход Convertto-Html следует подавать список выводимых объектов, т.е. … | Convertto-Html -Property name, status. A11: Продолжение A10: Создайте более привлекательную веб-страницу и список с именами и статусами всех служб. Можно также перед преобразованием отсортировать выводимые данные по статусу. Подсказка: Ваша командная строка теперь будет состоять из 4 команд: вывести список всех служб, отсортировать их по статусу, преобразовать в HTML, вывести как файл. Поскольку Convertto-Html создает текст HTML, результат можно легко модифицировать, если у вас есть опыт работы с HTML. Это не задача Windows PowerShell, но PowerShell может вам помочь. Попытайтесь понять, что делает этот код, прежде чем скопировать, вставить и выполнить его в Windows PowerShell: Get-Service | ConvertTo-Html -Property name,status | Foreach { If ($_ -Like "*Running*") {$_ -Replace "", ""} else {$_ -Replace "", ""}} > .\get-service.html Выходной файл должен выглядеть похоже на то, что приведено ниже. В принципе, этот пример работает так же, как Write-Host, но здесь отдельные строки файла HTML переформированы: команда HTML для столбца таблицы задает зеленый или красный фоновый цвет bgcolor green или bgcolor red . Поскольку не все знают HTML, этот пример приведен, как исключение, с полным кодом решения. Рисунок 6: Цветной вывод HTML с использованием преобразования HTML^ Работа с файлами В следующих нескольких упражнениях мы будем работать с файлами. Если эта книга используется как часть курса, попросите тестовые файлы у преподавателя. Если вы работаете с упражнениями самостоятельно, просто создайте отдельную папку для упражнений. Для этого скопируйте в папку несколько разных файлов (например, 40). Если вы не можете их найти, воспользуйтесь файлами из своего Интернет-кэша. Вы должны убедиться, что используете файлы как минимум двух разных типов, но их может быть и больше. Работа с файлами в Windows PowerShell по-настоящему проста. Можно использовать псевдонимы популярных команд, таких как dir или ls. Для команды cd следует учитывать, что между командой и путем должен стоять пробел: «cd ..», а не «cd..»! Windows PowerShell превращает все файлы в объекты. Размер файла можно прямо запросить, его не придется выделять из строки. Кроме того, Windows PowerShell может работать не только в классической файловой системе. С помощью командлета Get-Psdrive вы можете вывести все диски, к которым Windows PowerShell позволяет осуществлять доступ. Диски выделяются двоеточием после их имени (:). Выведите список всех дисков Windows PowerShell. Переключитесь (cd) на диск ^ HKLM:. Введите команду cd software. Введите команду dir. Где вы теперь находитесь? Переключитесь на диск ENV:. Выведите его содержимое командой ls, как если бы это была обычная папка Unix. В конце переключитесь на диск CERT: и выведите список содержимого, используя командлет Get-Childitem. Вы увидите, что от Windows PowerShell невозможно скрыться почти нигде на вашем компьютере. Команды dir, ls и Get-Childitem всюду имеют одинаковые возможности. Это означает, что вы можете использовать те псевдонимы, которые вам больше нравятся. Чтобы оставаться в рамках синтаксиса Windows PowerShell, я буду говорить в основном о Get-Childitem. Еще одно замечание о реестре. Если вы когда-нибудь разбирались с реестром, то отметили, что по нему можно перемещаться при помощи команд dir и cd, но они не позволяют просмотреть значения ключей реестра. Причина в том, что значения реестра являются свойствами объектов реестра, в то время как размер (Size) или дата последнего изменения (Date last accessed) – это свойства файла. Чтобы увидеть значения реестра, необходима команда Get-ItemProperty. Эта команда выводит все свойства элемента реестра и их значения. Дополнительные сведения можно найти, как и ранее, в справке по Windows PowerShell. Чтобы упростить работу с тестовыми файлами, мы создадим в Windows PowerShell новый диск, который будет указывать на реальную тестовую папку. Для этого необходимо выполнить команду New-Psdrive. Создайте новое устройство, введя команду. Измените конец пути так, чтобы он указывал на вашу папку с тестовыми файлами: New-PSdrive -Name FK -Psprovider FileSystem -Root c:\путькпапке Затем воспользуйтесь командой cd FK:, чтобы перейти в эту папку и проверьте, в нужной ли папке вы находитесь. Если это не так, используйте команду Remove-PSDrive FK для удаления устройства и попробуйте еще раз. Следующие упражнения продемонстрируют вам обширные возможности Windows PowerShell. Переключитесь на свой учебный диск: cd fk: (В синтаксисе PowerShell, кстати, это будет выглядеть так: Set-Location fk:). Выведите список содержимого с помощью команды Get-Childitem. Скройте все временные файлы: Get-Childitem * -Exclude *.tmp, *.temp B1: Выведите только имена и длину файлов, игнорируя временные файлы с расширениями temp или tmp. Подсказка: Используйте те же методы, что и для вывода процессов и служб. Рисунок 7: Вывод имен и длины файлов без файлов TMP Чтобы свести к минимуму количество вводимой информации, Windows PowerShell предлагает различные способы сокращения команд. Введите Get-Alias | Sort-Object Definition и увидите список всех возможных псевдонимов команд. Однако для автоматического дополнения параметров необходимо точно ввести псевдоним, не ошибаясь в количестве букв, в том числе не добавляя лишних букв. Итак, Get-Childitem * -Exclude *.tmp | Select-Object name, length превратится в ls * -ex *.tmp | select n*, le* B2: Отсортируйте файлы в порядке возрастания по размеру (длине), затем по имени. Подсказка: Используйте те же методы, что и для вывода процессов в предыдущих примерах. ^ Поиск информации об объектах с помощью Get-Member Используйте командлет Get-Member, чтобы просмотреть все атрибуты и функции объекта. Для использования этой команды следует передать объект Get-Member через конвейер. Вы можете даже передать список одинаковых объектов Get-Member, который сможет правильно с ним разобраться. B3: Создайте список всех возможных атрибутов файла с помощью командлета Get-Member. Отсортируйте все файлы по дате последнего доступа. Подсказка: Используйте результат работы функции Get-Member и «угадайте» нужные атрибуты из списка свойств. Команда Group-Object может разделить список объектов на группы. Для этого необходимо использовать в качестве аргумента один из атрибутов объекта. Get-Service | Group-Object status затем создаст новый список, содержащий две (или более) записей. Удобно, что будет также показано число служб и их статус: Рисунок 8: Результаты работы командлета Group-Object B4: Сгруппируйте полученные файлы по расширению. Затем отсортируйте их, используя число файлов с каждым из расширений. Подсказка: Выведите файлы, сгруппируйте их и отсортируйте новый список по числам. Для этого используйте аргумент count. Кроме Get-Member для получения информации об объектах можно использовать еще один командлет, Measure-Object. Даже если вы не полностью знаете список параметров, используемых в Measure-Object, можно как минимум оценить его возможности на следующих примерах. Попытайтесь понять, какие результаты даст следующая цепочка команд: Get-Childitem | Measure-Object length -Average -Sum -Maximum-Minimum Возможно, после нескольких прочтений вы захотите проверить свои догадки. Все будет отлично работать и с использованием символов подстановки, и для обычных конвейеров командлетов Windows PowerShell. B5: Определите общий размер всех файлов TMP. На втором шаге выведите ТОЛЬКО общий размер. Подсказка: После первой попытки поместите всю строку в (). После запуска цепочки повторите команду с добавлением Get-Member для вывода всех атрибутов для получения результата (Вы помните? Windows PowerShell работает с объектами и переводит их в текст, так что их можно прочитать на экране!). Найдите свойство, которое соответствует вашим результатам в (), которое может также соответствовать атрибуту «Total». Помните цикл ForEach и как вы находили свойство «Status»? Да, именно: «object.status». А здесь нам нужен «total», а не «status». Измените текст примера соответствующим образом. ^ Удаление файлов Windows PowerShell также содержит все необходимые команды для удаления файлов. Используя командлет Remove-Item можно удалять не только файлы. Он работает аналогично Get-Childitem. Может быть будет разумно создать резервную копию папки с упражнениями. Если вы случайно удалите слишком многое, вы сможете по крайней мере начать сначала. B6: Удалите все файлы TMP с помощью Remove-Item с нужными аргументами! Иногда возникает необходимость удалить файлы, значения параметров которых выходят за нужные нам границы. В этом случае можно использовать командлет Where-Object. Как и для команды if, мы можем определить состояние, которому должны удовлетворять выбираемые объекты из списка. Давайте рассмотрим пример со службами. Используя Get-Service | Where-Object {$_.status -Eq "stopped”} можно просмотреть только остановленные сервисы. B7: Теперь удалите все файлы более 2 МБайт. 2 МБайт приблизительно соответствуют 2000000 байт. Подсказка: Создавайте свой финальный сценарий шаг за шагом. Сначала создайте список всех файлов и отфильтруйте их по размеру (…length -Gt 2000000). Вы получите новый список, который можно обрабатывать в цикле. Затем выведите только имена файлов ($_.fullname). Эти имена можно использовать для запуска Remove-Item. Каждый раз, когда вам надоест слишком длинная строка команд, вводите переменные. Кстати, вы не можете ввести 2 МБ как 2000000 (кроме всего прочего, это лишь приблизительное значение). Лучше прямо ввести в качестве размера 2MB, Windows PowerShell отлично понимает такой формат. Можно также потребовать сосчитать сумму 512KB + 512KB. Для вычислений требуется просто ввести числа непосредственно в командную оболочку, использовать особые командлеты не требуется. ^ Создание папок Теперь попробуем внести в хаос наших файлов некоторый порядок . Мы создадим отдельные подпапки для файлов всех типов, а затем переместим соответствующие файлы в папки. Для этого нам нужен командлет для создания нового «элемента»1 в файловой системе: New-Item. Он использует имя как аргумент, а тип как параметр, например, directory для каталога. Вы можете создать новый каталог «Test» следующим образом: New-Item .\test -Type Directory Чтобы упростить вам жизнь, мы еще раз рассмотрим команду сортировки: Get-Service | Sort-Object status вы уже знаете, а теперь попробуем Get-Service | Sort-Object status -Unique Эта последовательность команд возвращает только один элемент для каждого статуса. Попробуйте ее выполнить. Теперь у вас есть все, что нужно для создания папок и каталогов. B8: Создайте в папке с упражнениями отдельные подпапки для файлов с разными расширениями. Подсказка: Создайте список файлов и выберите их только по атрибуту «Extension». Теперь рассортируйте их с параметром -Unique. Вы увидите список расширений файлов Когда это будет сделано, вы сможете присвоить этот список переменной и перейти к следующему шагу – с помощью цикла пройти по списку объектов и создать подпапки с именами расширений (.extension). Помните, что для этого следует использовать полный путь с как минимум одним символом «\». Если с путем возникают проблемы, попробуйте использовать в качестве аргумента (".\New”+$_.Extension). Не забывайте указать тип объекта (directory) для создания каталога. Для перемещения файлов в нужное место мы используем команду Move-Item. В качестве аргументов этот командлет использует полное имя исходного объекта и путь, указывающий на конечное положение, например, Move-Item .\test.txt .\новаяпапка B9: Переместите все файлы из тестовой папки в созданные подпапки. Подсказка: Список Get-Childitem из оригинальной папки теперь содержит новые подпапки, которые следует фильтровать. Создайте новый список всех элементов (сначала внимательно просмотрите список). Отфильтруйте список с помощью оператора сравнения по регулярному выражению (…type -Notmatch "d”). Затем следует применить к списку, который теперь содержит только файлы, цикл. Последний шаг прост: для каждого объекта найдите соответствующую расширению файла папку и переместите файл в эту папку. Для сохранения промежуточных результатов всегда можно использовать переменные. Рисунок 9: папка с файлами до сортировки Рисунок 10: папка с файлами после сортировки И наконец, мы снова выводим все эти файлы. Исходная папка теперь будет пуста, а подпапки заполнены. Get-Childitem -Recurse покажет это в деталях. Давайте сохраним эти результаты в файл TXT, чтобы вы могли изучить его в Блокноте (Notepad). B10: Выведите содержимое папки с упражнениями, включая все подпапки, в текстовый файл, и сохраните его под именем FinalOutput.txt. B11: Если у вас имеется исходные файлы упражнений, вы можете сделать еще одну вещь: Чтобы еще более упростить себе жизнь, можно сбросить атрибут read-only для каждого файла Word. Для этого перейдите в подпапку для файлов .doc и вызовите все объекты. Атрибут объекта, который следует установить, называется IsReadOnly, ему следует присвоить значение 0 (числовой ноль). Подсказка: Используйте две команды: создайте список всех объектов, а затем с помощью цикла пройдите по объектам, как делали это раньше в других упражнениях. Windows PowerShell также поможет вам с ACL, вашими спецификациями защиты. Используя командлеты Get-Acl и Set-Acl, вы легко можете переносить их от одного объекта к другому и даже создавать новые. Однако это выходит за рамки нашего курса. Дополнительные сведения по ACL можно найти в интерактивной справке. Рисунок 11: Вывод содержимого под


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

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.