Powershell курсовая работа

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

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

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

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

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

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

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

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

ВВЕДЕНИЕ

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 — новой командной
оболочки.

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

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

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

1. КРАТКИЙ ОБЗОР 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 Сценарии

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

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

В PowerShell можно создавать собственные
функции, принимающие параметры с помощью ключевого слова function. Популярная
проблема для многих начинающих — то, что функции принимают аргументы,
разделённые не запятыми, а пробелами (как утилиты командной строки или
командлеты):

<function> <param1> <param2>:
Вызывает функцию с двумя аргументами.

(Эти аргументы могут быть привязаны к
параметрам, указанным в объявлении функции. Также к ним можно обратиться через
массив $args.

<function>(<param1>, <param2>):
Вызывает функцию с одним аргументом, который является массивом из двух
элементов.позволяет вызывать любые методы .NET, заключив их пространство имён в
квадратные скобки ([]), и затем используя пару двоеточий (::) для указания
статического метода. Например
[System.Console]::WriteLine(«PowerShell»). Объекты создаются с
помощью командлета New-Object, добавлять к ним новые свойства можно используя
командлет Add-Member.

Для обработки ошибок PowerShell предоставляет
механизм, основанный на .NET. В случае ошибки выдаются объекты, содержащие
информацию об ошибке (объект Exception), которые перехватываются ключевым
словом trap. Однако поведение при возникновении ошибок настраивается. Так,
можно настроить PowerShell, чтобы в случае ошибки он молча продолжал выполнение
без перехвата ошибки. Во второй версии PowerShell также была добавлена
конструкция Try Catch Finally.

Сценарии, написанные в PowerShell, можно
сохранять между сессиями в файлах .ps1. Затем можно использовать весь сценарий
или индивидуальные функции из него. Сценарии и функции используются подобно
командлетам, то есть они могут быть командами в конвейере, им можно передавать
параметры. Объекты могут прозрачно передаваться между сценариями, функциями и
командлетами в конвейере. Однако выполнение сценариев PowerShell по умолчанию
запрещено, и его надо включить с помощью командлета Set-ExecutionPolicy.
Сценарии PowerShell могут быть подписаны цифровой подписью для проверки их
целостности.

2. РАЗРАБОТКА

.1 Создание отчёта об установленном
программном обеспечении

Напишем небольшой скрипт создания html файл в
c:usersusername, где будет отображаться список недавно установленных
программ, сортированных по дате. Программы, установленные недавно будут
отображаться в начале списка.

#переменная

$vUserName
= (Get-Item
env:username).Value

$vComputerName = (Get-Item
env:Computername).Value

$filepath = (Get-ChildItem
env:userprofile).value

$name = (Get-Item
env:Computername).Value

## Html Style

$a = «<style>»

$a = $a +
«BODY{background-color:Lavender ;}»

$a = $a + «TABLE{border-width:
1px;border-style: solid;border-color: black;border-collapse: collapse;}»

$a = $a + «TH{border-width:
1px;padding: 3px;border-style: solid;border-color:
black;background-color:thistle}»

$a = $a + «TD{border-width:
1px;padding: 3px;border-style: solid;border-color:
black;background-color:PaleGoldenrod}»

$a = $a + «</style>»

# удаленние старого отчёта, если существует.

if (test-Path $filepath$name.html)
{ remove-Item $filepath$name.html;Host -ForegroundColor white -BackgroundColor
Red «Old file removed»

}

# Управление
командойHtml
-Title «Software Information for $name» -Body «<h1>
Computer Name: $name </h1>» >
«$filepath$name.html»WmiObject win32_Product -ComputerName $name |
Select Name,Version,PackageName,Installdate,Vendor | Sort Installdate
-Descending `

| ConvertTo-html -Head $a -Body
«<H2> Software Installed</H2>» >>
«$filepath$name.html»

$Report = «The Report is
generated On $(get-date) by $((Get-Item env:username).Value) on computer
$((Get-Item env:Computername).Value)»

$Report >>
«$filepath$name.html»Host «file is saved in $filepath and the
name of file is $name.html» -ForegroundColor CyanExpression
«$filepath$name.html»

## конец срипта

Рисунок 1 — Вид отчёта

2.2 Опрос всех машин в заданном ip
диапазоне

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

function Get-ComputerNameByIP {(

$IPAddress = $null

} elseif ($IPAddress) {

([System.Net.Dns]::GetHostbyAddress($IPAddress))

} elseif ($_) {[Exception] {warning
$_.Exception.Message;

}

[System.Net.Dns]::GetHostbyAddress($_)

} else {

$IPAddress = Read-Host “Please
supply the IP Address”

[System.Net.Dns]::GetHostbyAddress($IPAddress)

}

}{ }

}Check-Online {(

$computername

)connection -count 1 -ComputerName
$computername -TimeToLive 5 -asJob |Job |Job |Object { $_.StatusCode -eq 0 }
|Object -ExpandProperty Address StatusCode

}

$Start = Get-Date

$ips = 1..254 | ForEach-Object {
«192.168.1.$_» }

$online = Check-Online -computername
$ips

$online($PC in $online)
{ComputerNameByIP $PC

}

$End = Get-DateHost «`nStarted
at: » $Start

Write-Host «Ended at: » $End

Как будет выглядеть отчёт о сканировании
компьютеров в сети, мы можем видеть на рисунке 2.

рowershell скрипт программный
обеспечение

Рисунок 2 — Вид отчёта об опросе компьютеров

ЗАКЛЮЧЕНИЕ

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

То обстоятельство, что работа оболочки PowerShell
основана на .NET Framework, является главным ее отличием от предыдущих
командных оболочек Windows. PowerShell полностью объектно-ориентирована.
Результатом выполнения команды в PowerShell является не некий «текст сам по
себе», а объект платформы .NET. Этот объект представляет собой собственно
данные и имеет набор присущих ему свойств и методов.

Сегодня PowerShell является частью ОС Win2k8R2 и
Win7 и встроен в графические консоли администрирования последних продуктов
Microsoft (например, Exchange 2007 и System Center 2007).

Интерфейс программирования приложений ADSI
предназначен для доступа к службе Active Directory и позволяет создавать,
изменять и удалять объекты в каталогах, выполнять поиск и множество других
операций.

При использовании QAD команды для работы с AD
выглядят на порядок проще, а скрипты читабельнее.командлеты понадобятся в
случае использования некоторых GUI к PowerShell, в которых имеется функция для
работы с Active Directory (например, PowerGUI).

Производители программного обеспечения не
остаются в стороне и разрабатывают большое количество командлетов.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1.
http://technet.microsoft.com/en-us/library/bb978526.aspx

2.
PowerShell как средство автоматического администрирования, автор: И.В. Коробко
<http://www.ozon.ru/context/detail/id/17569241/>.

.
Windows PowerShell 2.0. Справочник администратора, автор: Уильям Р. Станек
<http://www.ozon.ru/context/detail/id/5009783/>.

4. Microsoft Windows Command-Line:
Administrator’s Pocket Consultant, автор: Уильям Р. Станек
<http://www.ozon.ru/context/detail/id/4284285/>.

5.
Введение в Windows PowerShell <http://oz.by/books/more1055762.html> ,
Андрей Попов, 2009.

ПРИЛОЖЕНИЕ

$vUserName = (Get-Item
env:username).Value

$vComputerName = (Get-Item
env:Computername).Value

$filepath = (Get-ChildItem
env:userprofile).value

$name = (Get-Item
env:Computername).Value

$a = «<style>»

$a = $a +
«BODY{background-color:Lavender ;}»

$a = $a + «TABLE{border-width:
1px;border-style: solid;border-color: black;border-collapse: collapse;}»

$a = $a + «TH{border-width:
1px;padding: 3px;border-style: solid;border-color:
black;background-color:thistle}»

$a = $a + «TD{border-width:
1px;padding: 3px;border-style: solid;border-color:
black;background-color:PaleGoldenrod}»

$a = $a + «</style>»(test-Path
$filepath$name.html) { remove-Item $filepath$name.html;Host -ForegroundColor
white -BackgroundColor Red «Old file removed»

}

# Управление
командойHtml
-Title «Software Information for $name» -Body «<h1>
Computer Name: $name </h1>» > «$filepath$name.html»WmiObject
win32_Product -ComputerName $name | Select
Name,Version,PackageName,Installdate,Vendor | Sort Installdate -Descending `

| ConvertTo-html -Head $a -Body
«<H2> Software Installed</H2>» >>
«$filepath$name.html»

$Report = «The Report is generated
On $(get-date) by $((Get-Item env:username).Value) on computer $((Get-Item
env:Computername).Value)»

$Report >>
«$filepath$name.html»Host «file is saved in $filepath and the
name of file is $name.html» -ForegroundColor CyanExpression «$filepath$name.html»Get-ComputerNameByIP
{(

$IPAddress = $null

){ }{($IPAddress -and $_) {‘Please
use either pipeline or input parameter’

} elseif ($IPAddress) {

([System.Net.Dns]::GetHostbyAddress($IPAddress))

} elseif ($_) {[Exception] {warning
$_.Exception.Message;

}

[System.Net.Dns]::GetHostbyAddress($_)

} else {

$IPAddress = Read-Host “Please
supply the IP Address”

[System.Net.Dns]::GetHostbyAddress($IPAddress)

}

}{ }

}Check-Online {(

$computername

) test-connection -count 1
-ComputerName $computername -TimeToLive 5 -asJob |Job |Job |Object {
$_.StatusCode -eq 0 } |Object -ExpandProperty Address StatusCode

}

$ips = 1..254 | ForEach-Object {
«192.168.1.$_» }

$online = Check-Online -computername
$ips

$online($PC in $online)
{ComputerNameByIP $PC

}

$End = Get-DateHost «`nStarted
at: » $StartHost «Ended at: » $End

Лабораторная
работа 3

Цель работы
– знакомство с основными возможностями
оболочки командной
строки Windows PowerShell 2.0

1. Краткие теоретические сведения

1.1. Цели и задачи создания новой оболочки

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

Для
достижения этих целей были решены
следующие задачи:

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

  • Организация работы с произвольными
    источниками данных в командной строке
    по принципу файловой системы. Например,
    навигация по системному реестру или
    хранилищу цифровых сертификатов
    выполняется из командной строки с
    помощью аналога команды CD интерпретатора
    Cmd.exe.

  • Разработка интуитивно понятной
    унифицированной структуры встроенных
    команд, основанной на их функциональном
    назначении. В новой оболочке имена всех
    внутренних команд (в PowerShell они называются
    командлетами) соответствуют шаблону
    «глагол-существительное», например,
    Get-Process (получить информацию о процессе),
    Stop-Service (остановить службу), Clear-Host
    (очистить экран консоли) и т.д. Для
    одинаковых параметров внутренних
    команд используются стандартные имена,
    структура параметров во всех командах
    идентична, все команды обрабатываются
    одним синтаксическим анализатором. В
    результате облегчается запоминание и
    изучение команд.

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

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

  • Разработка полноценной встроенной
    справочной системы для внутренних
    команд. Для большинства внутренних
    команд в справочной системе дано
    подробное описание и примеры использования.
    В любом случае встроенная справка по
    любой внутренней команде будет содержать
    краткое описание всех ее параметров.

  • Реализация автоматического завершения
    при вводе с клавиатуры имен команд, их
    параметров, а также имен файлов и папок.
    Данная возможность значительно упрощает
    и ускоряет ввод команд с клавиатуры.

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

Соседние файлы в папке ОС

  • #
  • #
  • #

0 / 0 / 0

Регистрация: 13.07.2013

Сообщений: 6

1

18.07.2013, 12:25. Показов 2193. Ответов 8


У меня курсовая на тему PowerShell. При защите нужно обьяснить что с помощью этой программы можно делать, почему именно её(не какие либо подобные), и в каких моментах, целесообразнее использовать. Какие преимущества. И написать сценарий какой нибудь элементарный, чтобы показать, что я этой программой владею. Я просмотрела кучу видео уроков и нигде не нашла ответы на эти вопросы..Ооочень нуждаюсь в вашей помощи



0



Модератор

Эксперт HardwareЭксперт Windows

15206 / 7790 / 732

Регистрация: 03.01.2012

Сообщений: 32,056

18.07.2013, 12:58

2

Цитата
Сообщение от dashazay
Посмотреть сообщение

При защите нужно обьяснить что с помощью этой программы можно делать,

Что, вы и этого не поняли, «просмотрев кучу видеоуроков»? Боюсь, что в этом случае вам уже не помочь…



0



0 / 0 / 0

Регистрация: 13.07.2013

Сообщений: 6

18.07.2013, 13:29

 [ТС]

3

ну делать что с помощью нее я примерно поняла, но вот какой нибудь сценарий не могу показать.. И ответить на вопрос почему бы не сделать дейтвия с помощью другой подобной программы.



0



11 / 11 / 1

Регистрация: 05.04.2010

Сообщений: 21

18.07.2013, 13:48

4

Есть у меня одна книжка коротенькая, страниц на 40-50, в которой есть и примеры и раскрывается преимущество PS перед VBS, WHS и cmd. Честно сказать, в любой книге про PS об этом написано



0



88 / 88 / 37

Регистрация: 28.11.2012

Сообщений: 309

18.07.2013, 14:08

5

если не ошибаюсь у курсовика есть тема? или вы хоть определитесь с темой. и вообще вам во фриланс…



0



0 / 0 / 0

Регистрация: 13.07.2013

Сообщений: 6

18.07.2013, 15:57

 [ТС]

6

Цитата
Сообщение от Sam_AleX
Посмотреть сообщение

Есть у меня одна книжка коротенькая, страниц на 40-50, в которой есть и примеры и раскрывается преимущество PS перед VBS, WHS и cmd. Честно сказать, в любой книге про PS об этом написано

я не могу найти, где написано о преимуществах.. сможешь подсказать..

Добавлено через 6 минут

Цитата
Сообщение от borne
Посмотреть сообщение

если не ошибаюсь у курсовика есть тема? или вы хоть определитесь с темой. и вообще вам во фриланс…

тема: Учебные материалы по теме Windows PowerShell 3.0
но попросили на 7 винде, т.е. где установлен PS 2.0 показать нибудь сценарий, обьяснить что он делает и рассказать что можно сделать в PS, чего нельзя сделать в cmd например
вот тут то я была не готова и теперь пересдача



0



11 / 11 / 1

Регистрация: 05.04.2010

Сообщений: 21

19.07.2013, 11:09

7

Цитата
Сообщение от dashazay
Посмотреть сообщение

я не могу найти, где написано о преимуществах.. сможешь подсказать..

книгу вышлю на почту, напиши в личку
в этой статье часть вопросов раскрывается https://www.cyberforum.ru/powershell/thread634851.
а защиту ты завалила на ерундовом вопросе



0



0 / 0 / 0

Регистрация: 13.07.2013

Сообщений: 6

20.07.2013, 09:39

 [ТС]

8

Sam_AleX, почта dasha_roxy@mail.ru
а ссылка не открывается
вот в понедельник защищать еще, надо все выучить



0



19 / 18 / 7

Регистрация: 30.09.2012

Сообщений: 35

05.09.2013, 20:43

9

Действительно вопрос ерундовый.Windows Power Shell — это оболочка в которой интегрируются и cmd и UNIX команды.Если знать хорошо ,то можно управлять системой. Восстанавливать её после ошибок.Настраивать службы — ЗНАЧИТ оптимизировать систему.Удалять и запускать процессы.Смотреть статистику работы рабочей станции. Смотреть конфигурацию оборудования. Создавать облачные диски. Создавать файлы. Многое другое. Вообщем очень полезная оболочка от microsoft. Пожалуй самая удобная. Для меня. Полезная для системных администраторов в первую очередь. Преимущество — удобство и простота в использовании.



0




С этим файлом связано 1 файл(ов). Среди них: Windows_Powershell_RU.pdf.
Показать все связанные файлы


Подборка по базе: Перспективы развития ОС Windows.docx, Системное программирование.docx, Дз задачи программирование Плещинская в.а. ГР-21.docx, 12 Программирование на PL_SQL 2.pptx, РП Эффективное поведение на рынке труда, включая деловое общение, МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ ДЛЯ ВЫПОЛНЕНИЯ ПРАКТИЧЕСКИХ РАБОТ ПО Д, Графическое программирование c применением OpenGL.docx, 9 КЛАСС ОГСЭ.03 Психология общения по специальности_ 09.02.07 Ин, Курс лекций по МДК 06.04 Интеллектуальные системы и технологии П, Команды консоли Windows XP.doc


Эффективное программирование в
Windows PowerShell
Разбираться в Windows PowerShell и получать от него больше.
Keith Hill Copyright © 2007-2009 3/8/2009

Содержание
Введение………………………………………………………………………………………………………………………………………1
Часть 1: Четыре командлета — ключи, открывающие PowerShell………………………………………………………..1
Ключ #1: Get-Command…………………………………………………………………………………………………………1
Ключ #2: Get-Help………………………………………………………………………………………………………………….2
Ключ #3: Get-Member……………………………………………………………………………………………………………5
Ключ #4: Get-PSDrive……………………………………………………………………………………………………………..7
Дополнение для PowerShell 2.0……………………………………………………………………………………………..8
Часть 2: Понимание вывода объектов……………………………………………………………………………………………..9
Вывод — это всегда объект .NET ……………………………………………………………………………………………..9
Функция возвращает все, что не попало в поток вывода……………………………………………………….10
Другие типы вывода, которые не могут быть захвачены………………………………………………………..13
Часть 3: Как объекты передаются по конвейеру……………………………………………………………………………..14
Часть 4: Разнообразие вывода — скаляры, коллекции и пустые наборы — о, боже!…………………………….17
Скаляры……………………………………………………………………………………………………………………………..17
Работа с коллекциями…………………………………………………………………………………………………………18
Работа с пустыми наборами………………………………………………………………………………………………..19
Часть 5: Используй объекты, Люк. Используй объекты!………………………………………………………………….21
Часть 6: Как форматируется вывод……………………………………………………………………………………………….25
Часть 7: Режимы синтаксического разбора PowerShell……………………………………………………………………35
Часть 8: Параметры привязки элементов конвейера ByPropertyName (по имени)……………………………40
Часть 9: Параметры привязки элементов конвейера ByValue (по значению)…………………………………….43
Часть 10: Регулярные выражения – один из мощнейших инструментов PowerShell………………………….48
Дополнение для PowerShell 2.0……………………………………………………………………………………………49
Часть 11: Сравнение массивов………………………………………………………………………………………………………50
Часть 12: Старайтесь использовать Set-PSDebug -Strict в своих сценариях ……………………………………….53
Примечание для PowerShell 2.0……………………………………………………………………………………………54
Часть 13: Комментирование строк в файле сценария……………………………………………………………………..55
Дополнение для PowerShell 2.0……………………………………………………………………………………………56

Введение
Я большой поклонник серии книг по эффективному программированию, таких как Effective COM и
Effective XML. Не пытаясь быть слишком самонадеянным, я хочу продемонстрировать некоторые приёмы, накопленные мной за последние пару лет использования Windows PowerShell в интерактивном режиме и написания производственных и тестовых скриптов. Эти приемы были созданы на PowerShell
1.0. Там, где это необходимо, добавлен раздел Обновление для PowerShell 2.0, в котором поясняются изменения, необходимые с предстоящим выходом версии 2.0. В заключение, ряд примеров иллюстрирует повышение функциональности PowerShell с помощью расширений, разработанных сообществом PowerShell Community Extensions. Эти расширения можно загрузить с http://www.codeplex.com/PowerShellCX
Оригинал документа на английском языке вы можете
загрузить с блога Keith Hill
. Перевод выполнен Сергеем
Вальковским для
WindowsFAQ.ru
. Дополнительные материалы и информацию о Windows PowerShell на русском
языке можно найти в блогах Василия Гусева
http://xaegr.wordpress.com
, Андрея Бешкова
http://blogs.technet.com/
abeshkov/default.aspx
, Дмитрия Сотникова
http://www.itcommunity.ru/blogs/dmitrysotnikov/default.aspx
, и на
крупнейшем собрании видеоуроков по PowerShell на русском языке —
http://www.techdays.ru/Category.aspx?
Tag=PowerShell
.
Часть 1: Четыре командлета — ключи, открывающие PowerShell
Эта часть относится скорее к основам PowerShell, чем к его эффективному применению. Тем не менее, эти четыре командлета имеют жизненно важное значение для выяснения того, что может PowerShell, и делает их заслуживающими внимания. Эти четыре командлета — то, что вы должны выучить в первую очередь. Они просты в использовании, но помогут вам начать использовать PowerShell эффективно.
Ключ #1: Get-Command
Этот командлет — лекарство от пустоты, приглашения PowerShell в никуда. В самом деле, вы только что установили PowerShell, запустили его, и теперь любуетесь этим:
1

А что дальше-то? Многие приложения страдают этим — «пустой экран смерти». Вы загрузили приложение, установили его, запустили — и теперь перед вами пустая рамка окна или документ, в котором ничего нет.
Зачастую нет ничего, что могло бы вам подсказать, как начать пользоваться новым приложением.
Командлет Get-Command позволит вам начать работу с PowerShell, показав список всех доступных команд. Это касается и ваших старых консольных приложений, пакетных файлов, сценариев VBScript и т. д. По существу, любой исполняемый файл может быть запущен из PowerShell. Конечно же, вы устанавливали PowerShell не только для того, чтобы запускать свои старые скрипты и приложения. Вы хотите узнать, что может PowerShell. Попробуйте вот так:
PS> Get-Command
CommandType Name Definition
———— —- ———-
Cmdlet Add-Content Add-Content [-Path]

[-Value] По умолчанию, Get-Command выводит список всех командлетов, предоставляемых PowerShell. Отметим, что Get-Command является одним из них. Get-Command может предоставить и больше информации, однако как заставить его сделать это? Чтобы выяснить это, мы перейдем ко второй команде, с которой вам необходимо познакомиться, и которая очень часто используется в PowerShell.
Ключ #2: Get-Help
Командлет Get-Help предоставляет справочные материалы по различным разделам, включая то, что делает определенный командлет, какие параметры он может иметь и обычно содержит примеры использования команд. Он также предоставляет общую справочную информацию, например, о масках в именах файлов или об операторах. Допустим, вы хотите посмотреть все разделы справки PowerShell. Это легко, достаточно ввести:
PS> Get-Help *
Name Category Synopsis
—- ——— ——— ac Alias Add-Content asnp Alias Add-PSSnapin
Get-Command Cmdlet Возвращает базовые сведения о команд…
Get-Help Cmdlet Отображает сведения о командлетах и …
Alias Provider Предоставляет доступ к псевдонимам W…
Environment Provider Предоставляет доступ к переменным ср…
FileSystem Provider Поставщик PowerShell для доступа к ф…
Function Provider Предоставляет доступ к функциям, опр…
Registry Provider Предоставляет доступ к разделам и зн…
Variable Provider Предоставляет доступ к переменным Wi…
Certificate Provider Обеспечивает доступ к хранилищам сер…
about_globbing HelpFile См. справку по подстановочным знакам about_history HelpFile Получение команд, введенных в команд…
about_if HelpFile Команда языка, используемая для выпо…
about_line_editing HelpFile Редактирование команд в командной ст…
about_location HelpFile Доступ к объектам из рабочего местоп…
about_logical_operator HelpFile Операторы, которые можно использоват…
2

А если вы хотите посмотреть общие справочные разделы, наберите
PS> Get-Help about*
Name Category Synopsis
—- ——— ——— about_alias HelpFile Использование альтернативных имен ко…
about_arithmetic_operators HelpFile Операторы, которые используются в ко…
about_array HelpFile Компактная структура размещения элем…
Давайте теперь попробуем применить Get-Help к командлету Get-Command и посмотрим, что мы еще можем получить с помощью Get-Command:
PS> Get-Help get-command -detailed
ИМЯ
Get-Command
ОПИСАНИЕ
Возвращает базовые сведения о командлетах и о других элементах команд Windows
PowerShell.
СИНТАКСИС
Get-Command [[-argumentList]

] [-verb ] [-noun ]
[-totalCount ] [-syntax] [-pSSnapIn ] []
Get-Command [[-name] ] [[-argumentList] ] [-commandType
{ | | | | |
|

Оглавление

  • Введение. 1
  • 1.Теоретическая глава. 1
  • 1.1 Способы работы с Active Directory. 2
  • 1.2 ADSI 3
  • 1.3 Провайдер AD.. 4
  • 1.4 Командлеты AD.. 6
  • 1.5 Управление Active Directory. 7
  • 1.6 Работа с группами. 11
  1. Аналитическая глава. 14
  2. Проектная глава. 20
  3. Технико-экономическое обоснование и расчет экономической эффективности предлагаемого проекта. 26
  • 4.1 Расчет затрат на разработку и реализацию проекта. 26
  • 4.2 Расчет текущих расходов в течение срока жизненного цикла проекта. 28
  • 4.3 Расчет платежей в виде налогов и экономии налогов на прибыль за счет амортизации. 30
  • Заключение. 32
  • Список литературы.. 32

Введение

ActiveDirectory® — это технология, «внутри» которой многие администраторы проводят большую часть своего времени, выполняя повседневную административную работу – добавление новых пользователей, обновление объектов директории и.т.д.

С внедрением в WindowsServer® 2008 R2 командлетов, ориентированных на ActiveDirectory, у администраторов появилась возможность экономить массу времени и сил, используя WindowsPowerShell® для автоматизации выполнения многих повторяющихся задач, которые раньше отнимали львиную долю времени. Автоматизация также позволяет повысить безопасность и стабильность работы, так как влияние человеческого фактора, а значит, и количество ошибок сводится к минимуму.

В Windows Server 2008 R2 впервые появился модуль Active Directory для Windows PowerShell. Этот модуль установлен на всех контроллерах домена и является частью RemoteServerAdministrationToolkit (RSAT) для Windows® 7. Модуль содержит командлеты, которые позволяют осуществлять управление ActiveDirectory из командной строки.

Также эти командлеты обеспечивают поддержку технологии, которая отвечает за работу новой графической консоли ActiveDirectoryAdministrativeCenter. Эти новые командлеты взаимодействуют с веб-сервисом, который является частью ActiveDirectory в WindowsServer 2008 R2. Этот же веб-сервис можно добавить в контроллеры доменов WindowsServer 2008 и WindowsServer 2003, загрузив его с официального сайта Microsoft. Найти его можно здесь:

http://go.microsoft.com/fwlink/?LinkId=193581

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

1.Теоретическая глава

1.1 Способы работы с ActiveDirectory

Директория ActiveDirectory является основой корпоративных сетей на базе WindowsServer 2000, 2003 и 2008. Именно там хранятся все учетные записи пользователей, информация о группах, компьютерах сети, ящиках электронной почты и многом другом.

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

Существует три основных способа работы с ActiveDirectory в WindowsPowerShell:

  • с помощью интерфейса ActiveDirectoryServiceInterfaces (ADSI) — этот способ является наиболее сложным, но работает в любой установке PowerShell и не требует дополнительных модулей. Он также наиболее близок к способу управления, который использовался в языке сценариев VBScript;
  • с помощью провайдера ActiveDirectory, входящего в расширения PowerShell, — этот способ позволяет подключить директорию в виде диска на вашем компьютере и перемещаться по ней с помощью соответствующих команд: dir, cd и т.д. Данный способ требует установки дополнительного модуля с сайта codeplex;
  • с помощью командлетов управления ActiveDirectory — это наиболее удобный способ манипулирования объектами директории, но он тоже требует дополнительной инсталляции соответствующих модулей.

1.2 ADSI

ActiveDirectoryServiceInterfaces (ADSI) хорошо знаком всем, кто пытался писать сценарии на языке VBScript. В PowerShell этот интерфейс реализован с помощью так называемого адаптера.

Указав в квадратных скобках название адаптера (ADSI) и путь к объекту в директории на языке LDAP-запроса (LightweightDirectoryAccessProtocol — протокол работы с директориями, который поддерживает и AD), мы получаем доступ к объекту из директории и можем дальше вызывать его методы.

Например, подсоединимся к одному из контейнеров директории и создадим в нем новую пользовательскую учетную запись.

$objOU=[ADSI]”LDAP://mydc:389/ou=CTO,dc=Employees,dc=testdomain,dc=local”

Итак, теперь у нас переменная $objOU содержит информацию о контейнере (имена переменных в PowerShell начинаются со значка доллара).

Вызовем метод Create и создадим в контейнере нового пользователя:

$objUser = $objOU.Create(“user”, “cn=Dmitry Sotnikov”)

Теперь мы можем устанавливать различные атрибуты:

$objUser.Put(«sAMAccountName”, «dsotnikov”)

И наконец, укажем директории, что эти изменения надо применить:

$objUser.SetInfo()

Преимуществами использования адаптера ADSI являются:

  • его наличие в любой поставке PowerShell. Если у вас установлен PowerShell и есть директория, с которой вам надо работать, — вы имеете все, что вам надо;
  • применение подхода, близкого к VBScript. Если у вас богатый опыт работы с директорией на языке сценариев VBScript или в приложениях .NET, вы сможете уверенно себя чувствовать, используя этот подход.

К сожалению, у метода есть и недостатки:

  • сложность — это самый сложный способ работы с директорией. Писать путь к объекту в виде запроса LDAP нетривиально. Для любой работы с атрибутами требуется указание их внутренних имен, а значит, надо помнить, что атрибут, обозначающий город пользователя, называется не «City», а «l» и т.д.;
  • громоздкость — как видно из примера, простейшая операция создания одной учетной записи занимает как минимум четыре строчки, включая служебные операции подсоединения к контейнеру и применения изменений. Таким образом, даже относительно простые операции становятся похожи на сложные сценарии.

1.3 Провайдер AD

PowerShell позволяет представлять различные системы в виде дополнительных дисков компьютера с помощью так называемых провайдеров. Например, в состав поставки PowerShell входит провайдер реестра и мы можем перемещаться по реестру с помощью знакомых и любимых всеми нами команд cd и dir (для любителей UNIX команда ls тоже поддерживается).

Провайдера ActiveDirectory в составеPowerShell нет, но его можно установить, зайдя на сайт проекта расширений PowerShell — PowerShellCommunityExtensions: http://www.codeplex.com/PowerShellCX.

Это проект с открытым кодом, который добавляет большое количество команд в систему PowerShell, а кроме того, устанавливает провайдера AD.

Заключение

WindowsPowerShell — новая командная строка и язык сценариев от компании Microsoft. PowerShell является компонентом WindowsServer 2008 (надо только выбрать его в ServerManager) и доступна для загрузки со странички www.microsoft.com/powershell для Windows XP, WindowsServer 2003 и WindowsVista.

Итак, команды PowerShell называются командлетами (cmdlet) и состоят из глагола (например, get, set, new, remove, move, connect) и существительного в единственном числе, описывающего объект действия. Между ними ставится дефис. Получается что-то вроде: get-process, stop-service и т.п.

Команды, как правило, связываются конвейером, обозначаемым вертикальной чертой (|). Этот знак означает, что вся коллекция объектов из предыдущей команды передается на вход следующей.

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

Список литературы

  1. Payette B. Windows PowerShell in Action. — Manning Publications Co, 2007.
  2. Holmes L. Windows PowerShell Cookbook. — O’Reilly, 2007.
  3. Wilson E. Windows PowerShell Step-by-Step. — Microsoft Press, 2007.
  4. Watt A. Professional Windows PowerShell (Programmer to Programmer). —Wrox Press, 2007.
  5. Kopczynski T. Windows PowerShell Unleashed. — SAMS Publishing, 2007.
  6. Jones D., Hicks J. Windows PowerShell: TFM. — Sapien, 2006.
  7. Cookey-Gam J., Keane B., Rosen J., Runyon J., Stidley J. Professional Windows
  8. PowerShell for Exchange Server 2007 Service Pack 1 (Programmer to Programmer). — Wrox Press, 2008.
  9. Koch F. Windows PowerShell. — (Электроннаяверсиякнигидоступнадля бесплатного скачивания по адресу http://blogs.technet.com/chitprode/archive/2007/05/10/english-version-of-windows-powershell-coursebook-available-for-download.aspx).
  10. Koch F. Administrative tasks using PowerShell. — (Электроннаяверсиякниги доступна для бесплатного скачивания по адресу http://blogs.technet.com/chitpro-de/archive/2008/02/28/fre

Добавить комментарий

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