Администрирование на PowerShell

Автор: Пользователь скрыл имя, 03 Марта 2013 в 11:10, курсовая работа

Описание работы

Windows PowerShell — расширяемое средство автоматизации от Microsoft, состоящее из оболочки с интерфейсом командной строки и сопутствующего языка сценариев. Впервые публично язык был продемонстрирован на PDC (Professional Developers Conference) в сентябре 2003 г. под кодовым названием «Monad». Версия 1.0 выпущена в 2006 году и сейчас доступна для Windows XP SP2/SP3, Windows Server 2003, Windows Vista, и встроена в Windows Server 2008 как опциональный компонент.

Содержание

ВВЕДЕНИЕ 3
ПОСТАНОВКА ЗАДАЧИ 4
КРАТКИЙ ОБЗОР POWERSHELL 5
1.1 Командлеты 6
1.2 Конвейер 7
1.3 Сценарии 8
РАЗРАБОТКА 11
ЗАКЛЮЧЕНИЕ 15
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 16
ПРИЛОЖЕНИЕ 17

Работа содержит 1 файл

Курсовой.doc

— 325.50 Кб (Скачать)

Министерство образования Республики Беларусь

 

БЕЛОРУССКИЙ НАЦИОНАЛЬНЫЙ ТЕХНИЧЕСКИЙ  УНИВЕРСИТЕТ

 

Международный институт дистанционного образования

 

Кафедра «Системы автоматизированного  проектирования»

 

 

 

 

 

 

 

 

 

КУРСОВАЯ РАБОТА

по дисциплине «Основы информационных технологий»

на тему: «Администрирование на PowerShell»                                                                     

 

 

 

 

 

 

 

 

 

 

 Исполнитель: (магистрант) Сасов М.Л.

 Кафера «Информационные системы и технологии»

 специальности 1-408002 “Системный анализ, управление и обработка информации”

 

 

Руководитель: к.т.н.,доцент Е.А. Шваякова

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Минск 2012

ОГЛАВЛЕНИЕ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ВВЕДЕНИЕ

Windows PowerShell — расширяемое средство автоматизации от Microsoft, состоящее из оболочки с интерфейсом командной строки и сопутствующего языка сценариев. Впервые публично язык был продемонстрирован на PDC (Professional Developers Conference) в сентябре 2003 г. под кодовым названием «Monad». Версия 1.0 выпущена в 2006 году и сейчас доступна для Windows XP SP2/SP3, Windows Server 2003, Windows Vista, и встроена в Windows Server 2008 как опциональный компонент.   Windows PowerShell 2.0 был выпущен в составе Windows 7 и Windows Server 2008 R2 как неотъемлемый компонент системы. Кроме того, вторая версия доступна и для других систем, таких как Windows XP SP3, Windows Server 2003 SP2, Windows Vista SP1 и Windows Server 2008.         Windows PowerShell построен на базе Microsoft .NET Framework и интегрирован с ним. Дополнительно PowerShell предоставляет удобный доступ к COM, WMI и ADSI, равно как и позволяет выполнять обычные утилиты командной строки, чтобы создать единое окружение, в котором администраторы смогли бы выполнять различные задачи на локальных и удалённых системах.         Эти административные задачи обычно выполняются с помощью командлетов (в оригинале «cmdlets», произносится как «commandlets»), которые являются специализированными классами .Net. Пользователь может комбинировать их в скриптах (сценариях), используя различные конструкции, утилиты командной строки и обращения к обычным классам .NET (или WMI/COM объектам). Кроме того, можно использовать различные хранилища данных, такие как файловая система или реестр, которые предоставляются PowerShell’у посредством «поставщиков» (в оригинале providers). Windows PowerShell также предоставляет механизм встраивания, благодаря которому исполняемые компоненты PowerShell могут быть встроены в другие приложения. Эти приложения затем могут использовать функциональность PowerShell для реализации различных операций, включая предоставляемые через графический интерфейс. Этот подход применен в Microsoft Exchange Server 2007 для реализации управляющей функциональности в виде командлетов PowerShell и графических утилит управления в виде оболочек PowerShell, которые вызывают необходимые командлеты. Таким образом, графический интерфейс управления находится поверх промежуточного слоя — PowerShell. Другие приложения Microsoft, включая Microsoft SQL Server 2008, System Center Operations Manager и System Center Data Protection Manager также предоставляют доступ к своим интерфейсам управления через командлеты PowerShell.

ПОСТАНОВКА ЗАДАЧИ

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

 

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

1. Рассмотрим  ситуацию, когда нужно удалённо  посмотреть список установленных недавно программ на клиентской машине. При помощи языка Power Shell попробуем написать скрипт, который создавал бы список установленного программного обеспечения на пользовательской машине, и сортировал их по дате установки.

2.  Напишем  скрипт, который бы сканировал  заданный диапазон  ip адресов и выводил отчёт обо всех компьютеров в сети. Это очень удобно, когда надо проследить присутствие той или иной машины в сети.

 

 

 

 

 

 

КРАТКИЙ ОБЗОР POWERSHELL

 

Команды, исполняемые в Windows PowerShell, могут быть в форме командлетов, которые являются специализированными  классами .NET, созданными с целью  предоставления функциональности в PowerShell в виде сценариев PowerShell (*.ps1) или являться обычными исполняемыми файлами. Если команда является исполняемым файлом, то PowerShell запускает её в отдельном процессе; если это командлет, то он исполняется внутри процесса PowerShell. PowerShell предоставляет интерфейс командной строки, в котором можно вводить команды и отображать выводимые ими данные в текстовом виде. Этот пользовательский интерфейс, базирущийся на стандартном механизме консоли Windows, предоставляет настраиваемый механизм автозавершения команд, но не обладает возможностью подсветки синтаксиса (хотя при желании её можно обеспечить). В PowerShell также можно создавать псевдонимы (alias) для командлетов, которые при вызове преобразуются в оригинальные команды. Кроме того, поддерживаются позиционные и именованные параметры для командлетов. При выполнении командлета работа по привязке значений аргументов к параметрам выполняется самим PowerShell, но при вызове внешних исполняемых файлов аргументы передаются им для самостоятельного разбора.

Другое понятие, используемое в PowerShell, — это «конвейер» (pipeline). Подобно конвейерам в Unix, они предназначены для объединения нескольких команд путём передачи выходных данных одной команды во входные данные второй команды, используя оператор |. Но в отличие от аналога в Unix, конвейер PowerShell является полностью объектным, то есть данные между командлетами передаются в виде полноценных объектов соответствующих типов, а не как поток байтов. Когда данные передаются как объекты, содержащиеся в них элементы сохраняют свою структуру и типы между командлетами, без необходимости использования какой либо сериализации или посимвольного разбора (parsing) данных, как в случаях когда доступны лишь байтовые потоки. Объект также может содержать некоторые функции, предназначенные для работы с данными. Они также становятся доступными для получающего их командлета. Вывод последнего командлета в конвейере PowerShell автоматически передаёт на командлет Write-Host, который создаёт текстовое представление объектов и содержащихся в них данных и выводит его на экран.

Так как все  объекты PowerShell являются объектами .NET, они содержат метод .ToString(), возвращающий текстовое представление данных объекта. PowerShell использует этот метод для преобразования объекта в текст. Кроме того, он позволяет указать правила форматирования, так что текстовое представление объектов может быть настроено. Однако, с целью поддержания совместимости, если в конвейере используется внешний исполняемый файл, то он получает текстовый поток, представляющий объект, и не интегрируется с системой типов PowerShell.

Расширяемая система  типов (Extended Type System, ETS) PowerShell базируется на системе типов .NET, но реализует  некоторые дополнения. Например, она  позволяет создавать различные  представления объектов, отображая  лишь некоторые из их свойств и методов, а также применять специальное форматирование и механизмы сортировки. Эти представления привязываются к оригинальным объектам с помощью конфигурационных файлов в формате XML.

1.1 Командлеты

Командлеты (Cmdlets) — это специализированные команды PowerShell’а, которые реализуют различную функциональность. Это родные для PowerShell’а команды. Командлеты именуются по правилу Глагол-Существительное (Verb-Noun), например Get-ChildItem, благодаря чему их предназначение понятно из названия. Командлеты выводят результаты в виде объектов или их коллекций. Опционально командлеты могут получать входные данные в такой же форме и, соответственно, использоваться как получатели в конвейере. Хотя PowerShell позволяет передавать по конвейеру массивы и другие коллекции, командлеты всегда обрабатывают объекты поочередно. Для коллекции объектов обработчик командлета вызывается для каждого объекта в коллекции по очереди.

Командлеты являются специализированными классами .NET, экземпляры которых создаются в PowerShell и запускаются им при вызове. Командлеты наследуются от Cmdlet или от PSCmdlet, причём последний используется тогда, когда командлету необходимо взаимодействовать с исполняемой частью PowerShell (PowerShell runtime). В этих базовых классах оговорены некоторые методы — BeginProcessing(), ProcessRecord() и EndProcessing(), как минимум один из которых реализация командлета должна перезаписать для предоставления своей функциональности. Каждый раз при запуске командлета эти методы вызываются PowerShell’ом по очереди. Сначала вызывается BeginProcessing(), затем, если командлету передаются данные по конвейеру, - ProcessRecord() для каждого элемента, и в самом конце - EndProcessing(). Класс, реализующий Cmdlet, должен иметь один атрибут .NET — CmdletAttribute, в котором указываются глагол (Verb) и существительное (Noun), составляющие имя командлета. Популярные глаголы (рекомендуется использовать только их) представлены в виде перечисления (Enum).

Реализации командлетов  могут вызывать любые доступные .NET API и могут быть написаны на любом языке .NET. PowerShell также предоставляет некоторые дополнительные API, такие как WriteObject(), которые необходимы для доступа к специфичной для PowerShell функциональности, например для вывода результирующих объектов в конвейер. Командлеты могут использовать API для доступа к данным напрямую или воспользоваться инфраструктурой поставщиков (Provider) PowerShell, которые позволяют обращаться к хранилищам данных через уникальные пути. Хранилища данных представляются через буквы дисков и иерархическую структуру внутри них (директории). Windows PowerShell поставляется с поставщиками для файловой системы, реестра Windows, хранилища сертификатов, а также для псевдонимов команд (alias:), переменных (variable:) и функций (functions:). Другие приложения тоже могут добавлять свои командлеты и поставщики для доступа к своим хранилищам данных.

В PowerShell V2 была добавлена  возможность создания командлетов  на самом PowerShell, без использования .NET языков.

1.2 Конвейер

В PowerShell, как и в оболочках Unix/Linux, присутствует конвейер. Этот конвейер служит для передачи выходных данных одного командлета во входные данные другого командлета. В частности, пользователь может вывести результаты командлета Get-Process в командлет Sort-Object (например, для сортировки процессов по дескрипторам (handles) ), затем в Where-Object, чтобы отфильтровать процессы, которые, например, занимают меньше 1 МБ страничной памяти, и в конце концов передать результаты в командлет Select-Object, чтобы выбрать только первые 10 процессов (по количеству дескрипторов).

Концепция конвейера  изначально используется в Unix/Linux системах (см. Конвейер (UNIX)) , PowerShell отличается от них. В Unix/Linux вывод одной команды  передаётся на следующий этап конвейера  в бинарной форме, т.е. являет собой фактически поток данных. Рассмотрим пример Unix/Linux shell:

dd if=/dev/zero bs=1M count=1M | bzip2 -z9 -c > ex.bz2

поток "нулей" блоками по 1 МБ в количестве 1Миллиона раз (из устройства /dev/zero) командой dd (копирования специальных файлов) передаётся на ввод команды Bzip2, которая их сжимает максимально возможно (с точки зрения алгоритма сжатия bzip2, опция -z9) и результирующий поток передаёт на stdout (опция -с), который в свою очередь перенаправляется в файл ex.bz2. Результатом выполнения такой относительно короткой команды станет создание архива, внутри которого будет 1Т поток нулевых байтов. Сам процесс создания такого архива применяет в данном случае 2-а последовательных конвейера.

Реализовать подобную функциональность и гибкость в Windows средствами самой  ОС Windows долгое время было практически  невозможным. Заделать данную брешь  в средах Windows и был фактически призван PowerShell являющийся неким подобием Unix shell например как Bourne shell.

В PowerShell конвейер состоит из объектов .NET. что вряд ли увеличивает быстродействие межпроцессного взаимодействия (IPC) см. Межпроцессное_взаимодействие.

1.3 Сценарии

PowerShell включает язык сценариев с динамическими типами, на котором можно реализовывать сложные операции с использованием командлетов. Язык сценариев поддерживает переменные, функции, конструкции ветвления (if-then-else) циклы (while, do, for и foreach), структурированную обработку ошибок и множество других возможностей, включая интеграцию с .NET. Переменные в PowerShell обозначаются префиксом $ перед именем; им может быть присвоено любое значение, включая вывод командлетов. Хотя сам язык не строго типизирован, внутри переменные сохраняются с их типами, которые могут быть базовыми типами (primitive types) или объектами. Строки могут быть заключены в одиночные кавычки или в двойные кавычки: при использовании двойных кавычек переменные, содержащиеся в строке, будут заменены их значениями. В соответствии с синтаксисом переменных, если путь к файлу помещен в фигурные скобки с предшествующим знаком доллара (то есть $C:\foo.txt), то это будет ссылкой на содержимое файла. Всё, что будет назначено такой переменной, будет записано в файл, и наоборот — при обращении к её содержимому будет выдано содержимое файла.

К свойствам и методам объекта  можно обращаться, используя точку (.), как в синтаксисе C#. PowerShell предоставляет специальные переменные, такие как $args, содержащую массив всех неименованных аргументов командной строки, переданных функции, или $_, ссылающуюся на текущий объект в конвейере и других конструкциях. В PowerShell также присутствуют массивы и ассоциативные массивы. Кроме того, PowerShell автоматически вычисляет арифметические выражения, введённые в командной строке, и понимает популярные аббриевиатуры, такие как GB, MB и KB.

Информация о работе Администрирование на PowerShell