Знакомство с Windows PowerShell™
Корпорация Майкрософт
Дата публикации: сентябрь 2006 г.
Аннотация
Windows PowerShell™ — это новая командная оболочка Windows, разработанная в первую очередь для системных администраторов. Она включает интерактивную командную строку и среду исполнения сценариев, которые можно использовать вместе или по отдельности. 
Данный документ написан для того, чтобы помочь пользователям быстрее ознакомиться с оболочкой Windows PowerShell и ее базовыми возможностями. Чтобы получить более подробные сведения, обратитесь к руководству «Введение в Windows PowerShell». 

Содержание
Авторские права на руководство «Знакомство с Windows PowerShell™»	5
Цели разработки Windows PowerShell	6
Цель документа	6
Знакомство с Windows PowerShell	7
Командлеты Windows PowerShell	7
Новый язык сценариев	8
Команды и служебные программы Windows	8
Обработка объектов	8
Конвейеры объектов	10
Взаимодействие и сценарии	11
Интерактивная среда	11
Поддержка сценариев	11
Запуск Windows PowerShell	12
Работа с Windows PowerShell	13
Командлет Get-Help: получение справочных сведений	13
Использование командлетов	15
Получение сведений об объектах: командлет Get-Member	17
Использование параметров командлетов	20
Общие параметры	21
Форматирование вывода команд	21
Использование псевдонимов	24
Создание псевдонима	25
Удаление псевдонима	25
Использование функций для создания альтернативных имен	25
Использование программ Windows	26
Управление ошибками	26
Навигация в Windows PowerShell	27
Просмотр файловой системы	27
Просмотр реестра	28
Просмотр хранилища сертификатов	29
Просмотр других дисков	31
О дисках Windows PowerShell	31
Диски и поставщики	32
Настройка Windows PowerShell	33
Исследование политики выполнения	33
Профили Windows PowerShell	34
Основные сведения о профилях	34
Создание профиля	34

Авторские права на руководство «Знакомство с Windows PowerShell™»
Этот документ предоставлен только в информационных целях, и корпорация Майкрософт не дает в нем никаких гарантий, явных или подразумеваемых. Сведения в этом документе, включая URL-адреса и другие ссылки на веб-узлы в Интернете, могут быть изменены без предупреждения. Все риски, связанные с использованием или результатами использования этого документа, несет пользователь. Если не указано иное, встречающиеся в этом документе названия компаний, организаций и продуктов, имена доменов, адреса электронной почты, эмблемы, имена людей, названия населенных пунктов и события являются вымышленными. Любая связь с реальными названиями компаний, организаций и продуктов, именами доменов, адресами электронной почты, эмблемами, именами людей, названиями населенных пунктов и событиями случайна. Ответственность за соблюдение всех применимых законов об авторском праве лежит на пользователе. Без ущерба для прав по законам об авторских правах, никакая часть этого документа не может быть воспроизведена, сохранена, включена в информационно-поисковую систему или передана в какой-либо форме любыми средствами (электронными, механическими, фотокопировальными, записывающими или прочими) в любых целях без специального письменного разрешения корпорации Майкрософт.
Предмет этого руководства может быть защищен патентами, патентными заявками, товарными знаками, авторским правом или иными правами корпорации Майкрософт на интеллектуальную собственность. За исключением случаев, явно указанных в каком-либо письменном лицензионном соглашении с корпорацией Майкрософт, этот документ тот документ не дает вам никаких прав на патенты и товарные знаки, а также авторских прав и других прав интеллектуальной собственности.
© Корпорация Майкрософт (Microsoft Corp.), 2006.  Все права защищены.
Microsoft, MS-DOS, Windows, Windows NT, Windows 2000, Windows XP, Windows Server 2003, Windows Vista, .NET Framework 2.0, .NET Framework 2.0 Runtime Components и Win32 являются охраняемыми товарными знаками корпорации Майкрософт в США и других странах.
Упоминаемые в этом документе имена действительных компаний и продуктов могут быть торговыми марками соответствующих владельцев.
Цели разработки Windows PowerShell             
Windows PowerShell — это новая командная оболочка Windows, разработанная в первую очередь для системных администраторов. Она включает интерактивную командную строку и среду исполнения сценариев, которые можно использовать вместе или по отдельности. 
В отличие от большинства оболочек, которые принимают и возвращают текст, оболочка Windows PowerShell, разработанная на основе среды CRL .NET и платформы .NET Framework, принимает и возвращает объекты .NET. Это фундаментальное изменение делает возможными совершенно новые средства и методы администрирования и конфигурирования систем Windows.
В Windows PowerShell реализована новая концепция командлетов — простых, узко специализированных средств командной строки, встроенных в оболочку. Командлеты можно использовать и по отдельности, однако по-настоящему их достоинства проявляются тогда, когда эти простые средства используются в комбинации друг с другом для решения сложных задач. Windows PowerShell включает более ста основных командлетов, к тому же вы можете создавать собственные командлеты и обмениваться ими с другими пользователями.
Как и многие другие оболочки, Windows PowerShell обеспечивает доступ к файловой системе на компьютере. Кроме того, в состав оболочки Windows PowerShell входят поставщики, позволяющие столь же легко работать с другими хранилищами данных, такими как реестр и хранилища сертификатов цифровых подписей.
Данный документ представляет собой ознакомительное руководство по оболочке Windows PowerShell: ее языку, командлетам, поставщикам и способам использования объектов. 
Цель документа
Данный документ написан для того, чтобы помочь пользователям приступить к работе с Windows PowerShell. В нем описываются базовые возможности этой оболочки. Подробную сведения об оболочке Windows PowerShell и ее возможностях, а также примеры их использования можно найти в руководстве «Введение в Windows PowerShell».
Знакомство с Windows PowerShell             
Большинство оболочек, в том числе Cmd.exe и оболочки SH, KSH, CSH и BASH систем Unix, выполняют команду или служебную программу в новом процессе и представляют результаты пользователю в виде текста. За время существования этих оболочек были разработаны многие программы обработки текста, поддерживающие этот механизм взаимодействия, такие как sed, AWK и PERL.
 Некоторые команды встроены в эти оболочки и выполняются в процессе самой оболочки. Примерами могут служить команды typeset и dir в оболочках KSH и Cmd.exe соответственно.  В большинстве оболочек встроенных команд немного, поэтому для них создано большое число служебных программ.
Windows PowerShell сильно отличается от других оболочек.  
·	Windows PowerShell обрабатывает не текст, а объекты платформы .NET.  
·	Windows PowerShell включает множество встроенных команд, имеющих унифицированный интерфейс.
·	Все команды оболочки обрабатываются одним синтаксическим анализатором, в том время как во многих других оболочках каждому средству соответствует отдельный анализатор. Это значительно облегчает изучение команд.
И самая хорошая новость: в оболочке Windows PowerShell можно использовать традиционные средства Windows, такие как Net, SC и Reg.exe. 
Командлеты Windows PowerShell
Командлет — это команда Windows PowerShell, предназначенная для работы с объектами и выполняющая единственную функцию. Командлеты можно идентифицировать по их именам, которые составлены из глагола и существительного, разделенных дефисом (-), например Get-Help, Get-Process и Start-Service.
В традиционных оболочках команды представляют собой исполняемые программы, которые могут быть как совсем простыми (например, attrib.exe), так и очень сложными (netsh.exe). 
Большинство командлетов Windows PowerShell очень просты, и предполагается, что они будут использоваться вместе с другими командлетами. Например, командлеты категории «get» только возвращают данные, командлеты «set» только задают или изменяют значения элементов данных, командлеты «format» только форматируют данные, а командлеты «out» только направляют вывод в указанное место назначения. 
С каждым командлетом ассоциирован файл справки, который можно просмотреть, введя следующую команду:
get-help <имя-командлета> -detailed
Подробное представление файла справки по командлету включает описание командлета, его параметров и синтаксиса команды, а также пример использования командлета.
Новый язык сценариев
При разработке оболочки Windows PowerShell было принято решение создать для нее новый язык, а не использовать какой-либо из уже существующих. Это было сделано в силу следующих причин.
·	Язык Windows PowerShell должен был поддерживать управление объектами .NET. 
·	Язык Windows PowerShell должен был обеспечивать согласованную среду использования командлетов.
·	Язык Windows PowerShell должен был поддерживать решение сложных задач, не делая простые задачи более сложными. 
·	Язык Windows PowerShell должен был обладать совместимостью с высокоуровневыми языками, используемыми при программировании для .NET, такими как C#.
Команды и служебные программы Windows
Оболочка Windows PowerShell позволяет выполнять имеющиеся в Windows программы командной строки и запускать программы Windows с графическим пользовательским интерфейсом, такие как «Блокнот» и «Калькулятор». Создаваемый этими программами текст можно перехватывать и использовать в оболочке почти так же, как и при работе с Cmd.exe. 
Обработка объектов
Хотя на первый взгляд это не очевидно, при работе с оболочкой Windows PowerShell на самом деле вы имеете дело с объектами .NET. По мере накопления опыта достоинства обработки объектов станут для вас более очевидными, и вы начнете даже думать «объектами». 
С технической точки зрения объект .NET — это экземпляр класса .NET, состоящий из данных и операций, определенных для этих данных. Объект можно рассматривать как сущность, имеющую свойства (характеристики сущности) и методы (действия, которые можно выполнять над сущностью). 
Например, при возврате службы средствами оболочки Windows PowerShell на самом деле возвращается объект, представляющий соответствующую службу. При просмотре сведений о службе отображаются свойства объекта-службы. При запуске службы, то есть при изменении ее свойства Status на «started», выполняется метод объекта-службы.
Все объекты одного типа имеют одни и те же свойства и методы, однако значения свойств каждого экземпляра объекта могут быть разными. Например, каждый объект-служба имеет свойства Name и Status. Однако имя и статус одной службы могут отличаться от имени и статуса любой другой службы.
Получить сведения об объектах несложно. Чтобы узнать, объект какого типа получен командлетом, передайте результат выполнения команды «get» команде Get-Member с помощью оператора конвейерной обработки (|). Например, следующая команда передает объекты, возвращенные командой Get-Service, команде Get-Member:
get-service | get-member 	

Команда Get-Member отобразит сведения об объекте-службе, в том числе имя типа объекта и список его свойств и методов. 
   TypeName: System.ServiceProcess.ServiceController

Name                      MemberType    Definition
----                      ----------    ----------
Name                      AliasProperty Name = ServiceName
add_Disposed              Method        System.Void add_Disposed(EventHandler value)
Close                     Method        System.Void Close()
Continue                  Method        System.Void Continue()
...	

Чтобы получить сведения о классе объекта, скопируйте и вставьте имя типа (например, System.ServiceProcess.ServiceController) в MSDN. Обнаружив нужный класс, можно просмотреть подразделы MSDN со сведениями о свойствах и методах объектов, основанных на этом классе и аналогичных объектам оболочки Windows PowerShell.
Чтобы узнать значения всех свойств конкретного объекта, передайте результат выполнения команды «get» команде Format-List или Format-Table с помощью оператора конвейерной обработки (|). Вводя при этом командлеты форматирования, укажите параметр Property со значением «все» (*). Например, чтобы просмотреть значения всех свойств службы Schedule, введите следующую команду:
get-service schedule | format-list -property *	

В результате будут возвращены подобные данные:
Name                : Schedule
CanPauseAndContinue : True
CanShutdown         : True
CanStop             : True
DisplayName         : Task Scheduler
DependentServices   : {}
MachineName         : .
ServiceName         : Schedule
ServicesDependedOn  : {RpcSs}
ServiceHandle       : SafeServiceHandle
Status              : Running
ServiceType         : Win32ShareProcess
Site                :
Container           :	

При знакомстве с оболочкой Windows PowerShell не требуется понимать все нюансы работы с объектами  — достаточно не терять из виду общую концепцию. Скоро вы сможете использовать объекты по-настоящему эффективно.
Конвейеры объектов
Одним из главных преимуществ использования объектов является то, что оно значительно облегчает организацию конвейерного выполнения команд, то есть передачу вывода одной команды другой команде в качестве ввода. При реализации такого взаимодействия часто требуется преобразовать вывод в другой формат и удалить названия и заголовки столбцов.  
В оболочке Windows PowerShell реализована новая модель взаимодействия, основанная на объектах, а не тексте.  Командлет, который принимает объект, может обращаться к его свойствам и методам без каких-либо преобразований или других операций. Пользователи могут обращаться к свойствам и методам объекта по их именам вместо того, чтобы определять расположение нужных данных в выводе.
В следующем примере результат выполнения команды IpConfig передается команде Findstr. Оператор конвейерной обработки (|) отправляет результат выполнения левой команды правой команде. При работе с Microsoft® Windows® PowerShell выполнять манипуляции со строками или вычислять смещения данных не требуется.
PS> ipconfig | findstr "Address"
        IP Address. . . . . . . . . . . . : 172.28.21.5
        IP Address. . . . . . . . . . . . : 172.30.160.225	

Взаимодействие и сценарии
Интерактивная среда
Как и другие оболочки, Windows PowerShell включает полную интерактивную среду. Когда пользователь вводит в командной строке команду, она обрабатывается и вывод отображается в окне оболочки. Их можно отправить в файл или на принтер. Кроме того, с помощью оператора конвейерной обработки (|) его можно отправить другой команде. 
Поддержка сценариев
Если вы часто используете конкретные команды или их последовательности или разрабатываете алгоритм решения сложной задачи, команды можно сохранить в файле. Тогда вместо ввода команд в командной строке можно будет запустить этот файл. Файл команд называется сценарием.
Кроме интерактивного интерфейса в оболочке Windows PowerShell реализована полная поддержка сценариев. Файлы сценариев Windows PowerShell имеют расширение PS1. Чтобы запустить сценарий, введите его имя в командной строке. Расширение имени файла можно не указывать.
Например:
c:\test\testscript.ps1	

или
c:\test\testscript	

При запуске сценария нужно указывать полный путь к его файлу, даже если он хранится в текущем каталоге. Чтобы указать текущий каталог, введите его имя или точку (.), Например:
.\testscript.ps1 	

Сценарии очень полезны, а иногда даже необходимы для решения той или иной задачи, однако злоумышленники могут использовать их для распространения вредоносного кода. Для определения того, возможно ли выполнение сценариев и должны ли они включать цифровую подпись, в оболочке Windows PowerShell используется политика обеспечения безопасности, называемая политикой выполнения. Ради устранения явного риска ни одна политика выполнения, доступная в оболочке Windows PowerShell, не позволяет выполнить сценарий, дважды щелкнув его значок. Чтобы получить дополнительные сведения, введите следующую команду:
get-help about_signing	

Кроме того, оболочка Windows PowerShell включает развитый язык сценариев, позволяющий создавать самые разные сценарии: от совсем простых до очень сложных. Он поддерживает циклы, условные операторы, управление потоком выполнения кода и присваивание значений переменным. 
Запуск Windows PowerShell             
Чтобы запустить Windows PowerShell через меню Пуск, нажмите кнопку Пуск и выберите по очереди пункты Все программы, Windows PowerShell 1.0 и Windows PowerShell. 

Чтобы запустить Windows PowerShell с помощью окна «Запуск программы», нажмите кнопку Пуск, выберите пункт Выполнить и введите в поле следующую команду:
powershell	

Чтобы запустить Windows PowerShell из окна командной строки (cmd.exe), введите в нем следующую команду:
powershell	

Чтобы получить сведения о параметрах запуска Windows PowerShell, введите в окне командной строки следующую команду:
   
powershell -?	

Если оболочка Windows PowerShell запущена, для получения справочных сведений можно использовать командлет Get-Help. Введите для этого в командной строке Windows PowerShell следующую команду: 
get-help

Работа с Windows PowerShell             
В этом разделе объясняются основы работы с оболочкой Windows PowerShell. Он начинается с описания командлета Get-Help, который позволяет получить сведения о командлетах и принципах работы Windows PowerShell. Затем описываются некоторые базовые командлеты, объясняется использование параметров командлетов и демонстрируется способ форматирования вывода командлетов в наглядной форме. В конце раздела приводятся сведения о том, как использовать псевдонимы для упрощения работы с оболочкой Windows PowerShell, как запускать в Windows PowerShell традиционные программы Windows и как управлять ошибками.
Командлет Get-Help: получение справочных сведений
Командлет Get-Help — полезное средство изучения возможностей Windows PowerShell. Читая описания командлетов, изучая концепции, лежащие в основе оболочки Windows PowerShell, и изучая возможности ее языка, вы постепенно научитесь работать с этой оболочкой.
Наверное, пользователя, не работавшего с Windows PowerShell, в первую очередь заинтересует справочная система. Чтобы получить сведения о справочной системе оболочки Windows PowerShell, введите следующую команду:
get-help	

После этого можно изучить несколько базовых командлетов, таких как Get-Help, Get-Command, Get-Process, Get-Service и Get-Eventlog. 
Чтобы получить справочные сведения о командлете, представленную в простейшей форме, введите «get-help» и имя командлета. Например, чтобы получить справочные сведения о командлете Get-Command, введите следующую команду:
get-help get-command	

Если справочные сведения о командлете отформатированы некорректно, то есть начинается с тегов XMLNS, это может объясняться тем, что действующая политика выполнения Windows PowerShell не позволила системе загрузить конфигурационный файл, нужный для форматирования справочных сведений о командлете. Чтобы получить сведения о политиках выполнения, введите следующую команду:
get-help about_signing   	

Чтобы получить подробные справочные сведения о командлете, включающую описания параметров и примеры, воспользуйтесь командлетом Get-Help с параметром Detailed. Например, чтобы получить подробные справочные сведения о командлете Get-Command, введите следующую команду:
get-help get-command -detailed	

Чтобы отобразить все справочные сведения о командлете, в том числе техническую информацию о самом командлете и его параметрах, укажите параметр Full. Например, чтобы получить полную справочные сведения о командлете Get-Command, введите следующую команду:
get-help get-command -full	

Кроме того, можно отобразить отдельные фрагменты файла справки. Чтобы просмотреть только примеры, укажите параметр Examples. Например, чтобы отобразить примеры использования командлета Get-Command, введите следующую команду:
get-help get-command -examples	

Чтобы просмотреть только подробные описания параметров, воспользуйтесь командлетом Get-Help с параметром Parameter. При этом можно указать имя интересующего параметра или ввести подстановочный знак (*) для получения сведений обо всех параметрах. Например, чтобы отобразить описание параметра TotalCount командлета Get-Command, введите следующую команду:
get-help get-command -parameter totalcount	

Чтобы просмотреть сведения обо всех параметрах командлета Get-Command, введите следующую команду:
get-help get-command -parameter *	

Кроме того, для получения справочных сведений можно использовать функции Windows PowerShell, вызывающие командлет Get-Help. Функция Help отображает справочные сведения постранично. Функция Man отображает справочные сведения в стиле страниц Man систем Unix. Для отображения справки о командлете Get-Command с помощью функции Help или Man введите одну из следующих команд:
man get-command	

или
help get-command	

При запросе конкретного раздела справки командлет Get-Help отображает содержимое этого раздела. Однако при запросе нескольких разделов с использованием подстановочных знаков командлет Get-Help отображает список разделов. Например, чтобы просмотреть список разделов справки по командлетам «Get», введите следующую команду:
get-help get-*
Имена разделов справки по концепциям оболочки Windows PowerShell начинаются на «about_». Чтобы отобразить справочные сведения об элементе оболочки Windows PowerShell, введите «get-help» и интересующее вас понятие. Например, чтобы получить справку о подстановочных знаках, введите следующую команду:
get-help about_wildcard	

Чтобы отобразить список всех разделов справки, посвященных концепциям Windows PowerShell, введите следующую команду:
get-help about_*	

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

Использование командлетов
Командлет — это простое, узко специализированное средство командной строки, встроенное в оболочку. Командлеты используются так же, как традиционные команды и служебные программы. Для начала введите в командной строке Windows PowerShell имя командлета. Команды Windows PowerShell обрабатываются без учета регистра.
Например, чтобы испытать в деле командлет Get-Date, можно ввести следующую команду:
C:\PS> get-date
12 сентября 2006 г. 13:45:00	

Чтобы просмотреть список командлетов, доступных в ходе текущего сеанса, введите имя командлета Get-Command без параметров.
PS> get-command

CommandType     Name                            Definition
-----------     ----                            ----------
Cmdlet          Add-Content                     Add-Content [-Path] <String[...
Cmdlet          Add-History                     Add-History [[-InputObject] ...
Cmdlet          Add-Member                      Add-Member [-MemberType] <PS...
...
…	

По умолчанию командлет Get-Command выводит сведения в трех столбцах: CommandType, Name и Definition.  При выводе списка командлетов в столбце Definition отображается их синтаксис. Многоточие (…) в столбце синтаксиса указывает на то, что данные обрезаны. 
Командлет Get-Command может возвращать также команды и элементы команд, отличные от командлетов, в том числе псевдонимы команд, функции и исполняемые файлы, доступные в оболочке Windows PowerShell. 
Следующая команда выводит список доступных в Windows PowerShell исполняемых файлов. Для этого используется командлет Get-Command с параметром Name.
PS> get-command *.exe

CommandType Name                   Definition
----------- ----                   ----------
Application 000StTHK.exe           C:\WINDOWS\system32\000StTHK.exe
Application 00THotkey.exe          C:\WINDOWS\system32\00THotkey.exe
Application accwiz.exe             C:\WINDOWS\system32\accwiz.exe
...	

При выводе списка исполняемых файлов в столбце Definition отображаются пути к исполняемым файлам.
Испытайте после этого в деле другие командлеты, такие как Get-Process, Get-Service, Get-EventLog и Get-Alias. 
После освоения простых командлетов типа «Get-», попробуйте какой-нибудь более интересный командлет, например Get-WmiObject. Он очень полезен, потому что позволяет просматривать и изменять компоненты на удаленных компьютерах. Например, следующая команда возвращает сведения о системе BIOS на удаленном компьютере Server01:
get-wmiobject win32_bios -computername server01	

Чтобы получить справочные сведения о каком-либо командлете, введите следующую команду:
get-help <имя-командлета> -detailed
Пример:
get-help get-alias -detailed.
Получение сведений об объектах: командлет Get-Member
Командлет Get-Member является одним из самых полезных: он отображает сведения об объекте .NET, возвращенном командой. Эти сведения включает тип, свойства и методы объекта.
Чтобы получить эти сведения, направьте командлету Get-Member результат выполнения команды с помощью оператора конвейерной обработки (|). Например:
get-service | get-member
Эта команда показывает, что командлет Get-Service на самом деле возвращает набор объектов System.ServiceProcess.ServiceController: по одному на каждую службу.
   TypeName: System.ServiceProcess.ServiceController

Name                      MemberType    Definition
----                      ----------    ----------
Name                      AliasProperty Name = ServiceName
add_Disposed              Method        System.Void add_Disposed(EventHandler value)
Close                     Method        System.Void Close()
Continue                  Method        System.Void Continue()
CreateObjRef              Method        System.Runtime.Remoting.ObjRef CreateObjRef(Type requestedType)
Dispose                   Method        System.Void Dispose()
Equals                    Method        System.Boolean Equals(Object obj)
ExecuteCommand            Method        System.Void ExecuteCommand(Int32 command)
get_CanPauseAndContinue   Method        System.Boolean get_CanPauseAndContinue()
get_CanShutdown           Method        System.Boolean get_CanShutdown()
get_CanStop               Method        System.Boolean get_CanStop()
get_Container             Method        System.ComponentModel.IContainer get_Container()
get_DependentServices     Method        System.ServiceProcess.ServiceController[] get_DependentServices()
get_DisplayName           Method        System.String get_DisplayName()
get_MachineName           Method        System.String get_MachineName()
get_ServiceHandle         Method        System.Runtime.InteropServices.SafeHandle get_ServiceHandle()
get_ServiceName           Method        System.String get_ServiceName()
get_ServicesDependedOn    Method        System.ServiceProcess.ServiceController[] get_ServicesDependedOn()
get_ServiceType           Method        System.ServiceProcess.ServiceType get_ServiceType()
get_Site                  Method        System.ComponentModel.ISite get_Site()
get_Status                Method        System.ServiceProcess.ServiceControllerStatus get_Status()
GetHashCode               Method        System.Int32 GetHashCode()
GetLifetimeService        Method        System.Object GetLifetimeService()
GetType                   Method        System.Type GetType()
InitializeLifetimeService Method        System.Object InitializeLifetimeService()
Pause                     Method        System.Void Pause()
Refresh                   Method        System.Void Refresh()
remove_Disposed           Method        System.Void remove_Disposed(EventHandler value)
set_DisplayName           Method        System.Void set_DisplayName(String value)
set_MachineName           Method        System.Void set_MachineName(String value)
set_ServiceName           Method        System.Void set_ServiceName(String value)
set_Site                  Method        System.Void set_Site(ISite value)
Start                     Method        System.Void Start(), System.Void Start(String[] args)
Stop                      Method        System.Void Stop()
ToString                  Method        System.String ToString()
WaitForStatus             Method        System.Void WaitForStatus(ServiceControllerStatus desiredStatus), System.Voi...
CanPauseAndContinue       Property      System.Boolean CanPauseAndContinue {get;}
CanShutdown               Property      System.Boolean CanShutdown {get;}
CanStop                   Property      System.Boolean CanStop {get;}
Container                 Property      System.ComponentModel.IContainer Container {get;}
DependentServices         Property      System.ServiceProcess.ServiceController[] DependentServices {get;}
DisplayName               Property      System.String DisplayName {get;set;}
MachineName               Property      System.String MachineName {get;set;}
ServiceHandle             Property      System.Runtime.InteropServices.SafeHandle ServiceHandle {get;}
ServiceName               Property      System.String ServiceName {get;set;}
ServicesDependedOn        Property      System.ServiceProcess.ServiceController[] ServicesDependedOn {get;}
ServiceType               Property      System.ServiceProcess.ServiceType ServiceType {get;}
Site                      Property      System.ComponentModel.ISite Site {get;set;}
Status                    Property      System.ServiceProcess.ServiceControllerStatus Status {get;}	

Несмотря на обилие технических подробностей эти сведения очень практичны. 
·	Значение typename (такое как «System.ServiceProcess.ServiceController») позволяет узнать тип объекта .NET, возвращаемого командлетом. Чтобы получить сведения об объектах, относящихся к этому классу .NET, загрузите MSDN и скопируйте имя типа в поле поиска. Соответствующий раздел MSDN включает сведения о свойствах и методах объектов этого класса, в том числе объектов, возвращаемых командлетом Get-Service.
·	Типы Property представляют свойства объектов. В нашем случае значение каждого свойства характеризует объект-службу. Например, объекты ServiceController имеют свойство CanPauseAndContinue. Как сказано в MSDN, оно показывает, можно ли приостановить и возобновить выполнение службы. 
Чтобы узнать значение свойства конкретной службы, введите следующую команду:
(get-service <имя-службы>).<имя-свойства>	

Пример:
(get-service alerter).canpauseandcontinue	

Чтобы отобразить список с именем и значением свойства CanPauseAndContinue службы Alerter, введите следующую команду:
get-service alerter | format-list -property name, CanPauseAndContinue	

Чтобы отобразить список значений всех свойств службы Alerter, введите следующую команду:
get-service alerter | format-list -property *	

Чтобы отобразить таблицу с именем и значениями свойства CanPauseAndContinue всех служб, введите следующую команду:
get-service | format-table -property name, CanPauseAndContinue	

·	Типы Method представляют методы объекта, то есть действия, которые можно выполнять над объектом. Например, объекты ServiceController включают метод Stop, позволяющий остановить выполнение службы. 
Чтобы вызвать метод объекта-службы, введите команду следующего формата (не забудьте ввести скобки):
(get-service <имя-службы>).<имя-метода>()
For example,
(get-service schedule).stop()

Чтобы получить сведения о команде Get-Member, введите следующую команду:
get-help get-member -detailed.
Использование параметров командлетов
Параметры командлетов можно идентифицировать по дефису (-) перед именем параметра. (Косые черты (/ и \) вместе с параметрами в оболочке Windows PowerShell не используются). 
При вводе имени параметра можно указать полное имя, однако можно ввести и столько знаков, сколько требуется для различения вводимого имени от и имен других параметров командлета. 
Например, командлет Get-Help имеет параметр «Detailed», но вместо него можно ввести лишь «-det» — этого достаточно, чтобы система могла отличить его от параметра Debug того же командлета. 
Имена некоторых параметров вводить необязательно. Задать такой параметр можно, просто указав его значение.  Если имя параметра опущено, значение параметра должно быть введено в той же позиции, в которой оно указано на диаграмме синтаксиса. 
Например, командлет Get-Help имеет параметр Name, который определяет имя командлета или интересующее пользователя понятие. Имя этого параметра указывать необязательно. Таким образом, для получения справочные сведения о команде Get-Alias можно ввести любую из двух следующих команд:
get-help -name get-alias	

или
get-help get-alias	

Необязательные имена параметров можно найти в блоке синтаксиса файла справки. В нем они заключены в квадратные скобки, например:
Get-Help [[-Name] <string>]...	

Общие параметры
Некоторые параметры поддерживаются всеми командлетами. Такие параметры называются общими. Они обеспечивают согласованность интерфейса оболочки Windows PowerShell.
Если командлет поддерживает общий параметр, использование такого параметра не приводит к ошибке. Однако в некоторых командлетах такой параметр может просто пропускаться. Чтобы получить сведения об общих параметрах, введите следующую команду:
get-help about_commonparameters
Форматирование вывода команд
В традиционных оболочках команды и средства сами форматируют выводимые данные. Некоторые средства позволяют настроить формат вывода с помощью специальных параметров.
В оболочке Windows PowerShell вывод форматируют только командлеты форматирования:
·	Format-List
·	Format-Custom
·	Format-Table
·	Format-Wide
Все остальные командлеты вывод не форматируют. Благодаря этому изучать средства и параметры форматирования для многих средств не нужно. Достаточно запомнить командлеты Format и их параметры.
При выполнении команды Windows PowerShell вызывает модуль форматирования по умолчанию, который определяется по типу отображаемых данных. Этот модуль определяет, какие свойства вывода отображаются и в каком формате: списка или таблицы.
Например, при использовании командлета Get-Service данные по умолчанию выводятся как таблица с тремя столбцами, например:
C:\PS> get-service
Status   Name               DisplayName
------   ----               -----------
Running  AdtAgent           Event Forwarder
Stopped  Alerter            Alerter
Running  ALG                Application Layer Gateway Service	

...
Чтобы изменить формат данных, выводимых любым командлетом, направьте их с помощью оператора конвейерной обработки (|) командлету Format. 
Например, следующая команда отправляет вывод команды Get-Service командлету Format-List. В результате данные о каждой службе форматируются как список.
C:\PS> get-service | format-list
Name                : AdtAgent
DisplayName         : Event Forwarder
Status              : Running
DependentServices   : {}
ServicesDependedOn  : {eventlog, dnscache}
CanPauseAndContinue : False
CanShutdown         : True
CanStop             : True
ServiceType         : Win32OwnProcess

Name                : Alerter
DisplayName         : Alerter
Status              : Stopped
DependentServices   : {}
ServicesDependedOn  : {LanmanWorkstation}
CanPauseAndContinue : False
CanShutdown         : False
CanStop             : False
ServiceType         : Win32ShareProcess

Name                : ALG
DisplayName         : Application Layer Gateway Service
Status              : Running
DependentServices   : {}	

При использовании формата списка выводится больше сведений о каждой службе, чем в формате таблицы. Вместо трех столбцов данных о каждой службе в формате списка выводятся девять строк данных. Это не означает, что командлет Format-List извлекает дополнительные сведения о службах. Эти данные содержались в объектах, возвращенных командлетом Get-Service, однако командлет Format-Table, используемый по умолчанию, отбросил их, потому что не смог вывести на экран более трех столбцов.
При отображении данных можно указать не только формат их вывода (список или таблица), но и свойства объекта, которые должны быть отображены. Например, командлет Get-Service по умолчанию отображает только свойства Status, Name и DisplayName объекта-службы.
Чтобы просмотреть все свойства объекта, направьте вывод команды командлету Get-Member с помощью оператора конвейерной обработки (|). Например, чтобы просмотреть все свойства объекта-службы, введите следующую команду:
get-service | get-member -membertype *property

   TypeName: System.ServiceProcess.ServiceController

Name                MemberType    Definition
----                ----------    ----------
Name                AliasProperty Name = ServiceName
CanPauseAndContinue Property      System.Boolean CanPauseAndContinue {get;}
CanShutdown         Property      System.Boolean CanShutdown {get;}
CanStop             Property      System.Boolean CanStop {get;}
Container           Property      System.ComponentModel.IContainer Container {get;}
DependentServices   Property      System.ServiceProcess.ServiceController[] DependentServices {get;}
DisplayName         Property      System.String DisplayName {get;set;}
MachineName         Property      System.String MachineName {get;set;}
ServiceHandle       Property      System.Runtime.InteropServices.SafeHandle ServiceHandle {get;}
ServiceName         Property      System.String ServiceName {get;set;}
ServicesDependedOn  Property      System.ServiceProcess.ServiceController[] ServicesDependedOn {get;}
ServiceType         Property      System.ServiceProcess.ServiceType ServiceType {get;}
Site                Property      System.ComponentModel.ISite Site {get;set;}
Status              Property      System.ServiceProcess.ServiceControllerStatus Status {get;}	

Все эти свойства входят в состав объекта, возвращаемого командлетом Get-Service для каждой службы, и можно отобразить любые из них или все. Для выбора свойств, которые нужно отобразить, и порядка их отображения используйте параметр Property командлетов Format. В следующем примере команда Format-Table отображает только свойства Name, ServiceType и CanShutDown объекта-службы:
get-service | format-table name, Servicetype, Canshutdown	

Это далеко не все, что можно делать с данными, выводимыми оболочкой Windows PowerShell. Чтобы получить дополнительные сведения о командлетах Format, используйте следующие команды:
get-help format-list
get-help format-table
get-help format-wide
get-help format-custom	

Использование псевдонимов
Имена некоторых командлетов довольно громоздки. Чтобы уменьшить объем данных, которые нужно печатать при вводе команд, и помочь пользователям, привыкшим к другим оболочкам, в оболочке Windows PowerShell реализована поддержка псевдонимов, то есть альтернативных имен команд. Псевдоним можно создать для имени командлета, функции или исполняемого файла. Как только псевдоним определен, его можно использовать вместо соответствующего имени в любой команде.
Оболочка Windows PowerShell включает много встроенных псевдонимов и позволяет пользователям создавать собственные. Созданные псевдонимы действительны только в ходе текущего сеанса. Чтобы создать постоянный псевдоним, добавьте его в свой профиль Windows PowerShell.
Чтобы найти все псевдонимы, доступные в ходе текущего сеанса, введите следующую команду:
get-alias	

Чтобы найти псевдонимы командлета, введите следующую команду:
get-alias | where-object {$_.definition -eq "<имя-командлета>"}	

Пример:
get-alias | where-object {$_.definition -eq "set-location"}	

Поддержку псевдонимов обеспечивает в оболочке Windows PowerShell поставщик псевдонимов — сборка .NET, позволяющая просматривать псевдонимы в формате диска, очень похожего на диски файловой системы Windows. Диск псевдонимов называется «Alias:».
Чтобы перейти на диск Alias, введите следующую команду:
set-location alias:
Чтобы просмотреть псевдонимы, то есть дочерние элементы на диске «Alias:» введите следующую команду:
get-childitem
Чтобы просмотреть дочерние элементы на диске «Alias:» с другого диска, включите в команду имя диска. Пример:
get-childitem alias: 

Создание псевдонима
Создать псевдоним для командлета или команды Windows PowerShell можно с помощью командлета Set-Alias. Например, чтобы создать псевдоним «gh» для командлета Get-Help, введите следующую команду:
set-alias gh get-help	

Псевдонимы можно создавать и для команд, например команд, запускающих программы. Например, чтобы создать псевдоним «np» для команды, запускающей «Блокнот», введите следующую команду:
set-alias np c:\windows\notepad.exe	

(Путь к «Блокноту» может быть другим в вашей системе).
Удаление псевдонима
Чтобы удалить псевдоним, удалите его с диска «Alias:» с помощью командлета Remove-Item. Например, чтобы удалить псевдоним «ls», введите следующую команду:
remove-item alias:ls	

Использование функций для создания альтернативных имен
Псевдоним можно создать для командлета, функции или исполняемого файла, но не для команды с параметрами. Тем не менее, для команды с параметрами можно создать функцию, во многом похожую на псевдоним.
Например, чтобы открыть в «Блокноте» файл Boot.ini на компьютере, работающем под управлением ОС Windows XP, можно ввести следующую команду:
notepad c:\boot.ini	

Создать псевдоним для команды «notepad c:\boot.ini» нельзя, но для нее можно создать функцию. Следующая команда создает для этой команды функцию bootini:
function bootini {notepad c:\boot.ini}	

Эта функция аналогична псевдониму. Если ввести ее имя в командной строке Windows PowerShell, в «Блокноте» будет открыт файл Boot.ini. 
Использование программ Windows
Оболочка Windows PowerShell позволяет запускать доступные в Windows программы командной строки и программы с графическим интерфейсом. Если программа создает текстовый вывод, его можно перехватить и использовать в новой оболочке, как и при работе с любой другой оболочкой. 
Чтобы программу, такую как «Блокнот», можно было запустить в Windows PowerShell, ее исполняемый файл должен находиться в каталоге, указанном в переменной среды Path, потому что она определяет каталоги, в которых оболочка Windows PowerShell ищет приложения, служебные программы и сценарии. (Командлеты могут находиться в других каталогах).
Чтобы узнать, какие пути указаны в переменной среды Path, введите следующую команду: 
PS> $env:path	

Чтобы добавить каталоги в переменную среды Path, введите следующую команду: 
PS> $env:path += ";newdirectory"	

Например, чтобы добавить в переменную Path каталог, в котором находится файл WordPad.exe, введите следующую команду:
PS> $env:path += ";C:\Program Files\Windows NT\Accessories"	

Как и команда set, она изменяет значение переменной Path только для текущего сеанса Windows PowerShell. Чтобы новое значение действовало и в ходе других сеансов, добавьте эту команду в свой профиль Windows PowerShell. Дополнительные сведения см. в разделе «Профили Windows PowerShell».
Управление ошибками
При использовании Windows PowerShell иногда возникают ошибки. Это происходит, например, в тех случаях, когда пользователь пытается сделать рабочим контекстом несуществующий каталог или удалить файл, не имея нужных для этого прав.  
В оболочке Windows PowerShell ошибки делятся на два типа: 
·	Критические ошибки, которые приводят к завершению команды.
·	Некритические ошибки, которые не приводят к завершению команды.
Например, при удалении из каталога всех TMP-файлов нежелательно, чтобы система прерывала эту операцию, если ей не удается удалить какой-то из файлов. Пользователь предпочел бы, чтобы она удалила все файлы, которые можно удалить, а после удалил бы оставшиеся файлы вручную.  
Ошибка, которая возникает в результате неудачной попытки удалить файл, является некритической. При возникновении некритической ошибки Windows PowerShell продолжает работу и отображает вместе с выводимыми данными сообщение об ошибке.
Более серьезные ошибки приводят к прекращению обработки команды. Такие ошибки называются критическими. Критические ошибки не позволяют завершить выполнение команды. Например, если пользователь указал недопустимые данные или не имеет прав на выполнение команды, оболочка Windows PowerShell выдает критическую ошибку.
Навигация в Windows PowerShell             
Одним из достоинств оболочки Windows PowerShell является то, что она позволяет просматривать разнообразные хранилища данных с использованием тех же привычных пользователям процедур, которые применяются для перемещения по файловой системе.
Кроме обычных дисков файловой системы, таких как «C:» и «D:», оболочка Windows PowerShell включает диски, представляющие разделы реестра HKEY_LOCAL_MACHINE (HKLM:) и HKEY_CURRENT_USER (HKCU:), хранилище сертификатов цифровых подписей (Cert:), функции, доступные в ходе текущего сеанса (Function:), и не только. Они называются дисками Windows PowerShell.
В состав оболочки Windows PowerShell входят несколько полезных дисков, поддерживаемых поставщиками Windows PowerShell. Чтобы увидеть список дисков Windows PowerShell, введите следующую команду:
get-psdrive	

Просмотр файловой системы
После запуска оболочки Windows PowerShell вам, возможно, захочется ввести привычную команду cd, dir или ls. Прекрасно, сделайте это. cd — это псевдоним командлета Set-Location, который делает текущим контекстом указанный каталог. dir и ls — псевдонимы командлета Get-Childitem, который возвращает дочерние элементы контекста.
Используйте командлеты Set-Location (cd) и Get-Childitem (dir, ls) для перемещения по диску файловой системы. В оболочке Windows PowerShell ссылки на диски состоят из имени диска и двоеточия (например, C:), а родительские элементы отделяются от дочерних обратной косой чертой (\) или прямой косой чертой (/), например C:\Windows\System32.
Для упрощения перемещения по файловой системе в Windows PowerShell можно использовать следующее:
·	Символы, определяющие текущий каталог (.) и содержимое каталога (*).
·	Встроенные переменные, определяющие домашний каталог пользователя ($home) и каталог установки Windows PowerShell ($pshome).
Как и другие оболочки, Windows PowerShell позволяет изменять контексты, создавать, удалять, перемещать и копировать каталоги и изменять их свойства. В оболочке Windows PowerShell можно даже автоматически завершать вводимые пути, используя клавишу TAB. Чтобы получить дополнительные сведения, см. разделы справки, посвященные командлетам «-Item» (Get-Item, Get-Childitem, New-Item, Remove-Item, Set-Item, Move-Item и Copy-Item). 
Просмотр реестра
Просматривать реестр Windows можно так же, как и диск файловой системы. В оболочке Windows PowerShell кусту HKEY_LOCAL_MACHINE соответствует диск HKLM:, а кусту HKEY_CURRENT_USER — диск HKCU:.
Пример:
PS C:\> cd hklm:
PS HKLM:\> dir
PS HKLM:\> dir
   Hive: Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE
SKC  VC Name                           Property
---  -- ----                           --------
  4   0 HARDWARE                       {}
  1   0 SAM                            {}
Get-ChildItem : Requested registry access is not allowed.
At line:1 char:3
+ dir <<<<
 39   2 SOFTWARE                       {flash, (default)}
  8   0 SYSTEM                         {}
PS HKLM:\> cd system\currentcontrolset\control
PS HKLM:\system\currentcontrolset\control> dir	

Выводимые данные команды dir (Get-Childitem) при работе с дисками реестра и файловой системой различаются. Так как реестру соответствуют несколько дисков с разными данными, оболочка представляет их по-разному. В данном случае важно знать количество подразделов и записей в разделе реестра, поэтому кроме имен подразделов и записей выводимые данные включают счетчик подразделов (SKC) и счетчик записей (VC).
PS> cd "CurrentControlSet\Control\Session Manager"
PS> dir
    Hive: Registry::HKEY_LOCAL_MACHINE\system\CurrentControlSet\Control\Session
Manager

SKC  VC ChildName                      Property
---  -- ---------                      --------
  0   1 AppCompatibility               {AppCompatCache}
 15   0 AppPatches                     {}
  0   7 DOS Devices                    {AUX, MAILSLOT, NUL, PIPE, PRN, UNC, f...

Способы просмотра реестра слабо различаются, пока дело не доходит до записей реестра. Записи в разделе реестра считаются свойствами родительского раздела. Таким образом, для их получения следует использовать командлет Get-ItemProperty.
Например, если нужно узнать значение политики выполнения оболочки Windows PowerShell, можно использовать командлет Get-ExecutionPolicy или перейти к записи реестра ExecutionPolicy, позволяющей получить это значение, хранимое в элементе HKLM:\Software\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell.
PS C:\> cd hklm:
PS HKLM:\> cd software\microsoft\powershell\1\ShellIds\Microsoft.PowerShell
PS HKLM:\software\microsoft\powershell\1\ShellIds\Microsoft.PowerShell> dir
PS HKLM:\software\microsoft\powershell\1\ShellIds\Microsoft.PowerShell> get-itemproperty -path . -name executionpolicy

PSPath          : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\software\microsoft\powershell\1\ShellIds\Micro
                  soft.PowerShell
PSParentPath    : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\software\microsoft\powershell\1\ShellIds
PSChildName     : Microsoft.PowerShell
PSDrive         : HKLM
PSProvider      : Microsoft.PowerShell.Core\Registry
ExecutionPolicy : RemoteSigned	

Просмотр хранилища сертификатов
Хранилище сертификатов цифровых подписей также можно просматривать. Хранилищу сертификатов соответствует в оболочке Windows PowerShell диск Cert:. В следующем примере показано, как использовать командлеты Set-Location (cd) и Get-Childitem (dir, ls) для просмотра диска Cert:
PS C:\> cd cert:
PS cert:\> dir
Location   : CurrentUser
StoreNames : {TrustedPeople, _NMSTR, Trust, REQUEST...}

Location   : LocalMachine
StoreNames : {_NMSTR, Trust, REQUEST, TrustedPeople...}

PS cert:\> cd currentuser
PS cert:\currentuser> dir

Name : TrustedPeople
Name : _NMSTR
Name : Trust
Name : REQUEST
Name : AuthRoot
Name : ACRS
Name : My
Name : addressbook
Name : Disallowed
Name : CA
Name : UserDS
Name : Root
Name : TrustedPublisher

PS cert:\currentuser> cd authroot
PS cert:\currentuser\authroot> dir
    Directory: Microsoft.PowerShell.Security\Certificate::currentuser\authroot
Thumbprint                                Subject
----------                                -------
F88015D3F98479E1DA553D24FD42BA3F43886AEF  O=C&W HKT SecureNet CA SGC Root, C=hk
F44095C238AC73FC4F77BF8F98DF70F8F091BC52  CN=Class 3TS Primary CA, O=Certplus, C=FR
EF2DACCBEABB682D32CE4ABD6CB90025236C07BC  O="Colegio Nacional de Correduria Publica Mexicana, A.C.", CN="Autoridad C...
...
PS cert:\currentuser\authroot> get-childitem F88015D3F98479E1DA553D24FD42BA3F43886AEF
    Directory: Microsoft.PowerShell.Security\Certificate::currentuser\authroot
Thumbprint                                Subject
----------                                -------
F88015D3F98479E1DA553D24FD42BA3F43886AEF  O=C&W HKT SecureNet CA SGC Root, C=hk

PS cert:\currentuser\authroot> get-childitem F88015D3F98479E1DA553D24FD42BA3F43886AEF | format-list -property *

PSPath             : Microsoft.PowerShell.Security\Certificate::currentuser\authroot\F88015D3F98479E1DA553D24FD42BA3F43
                     886AEF
PSParentPath       : Microsoft.PowerShell.Security\Certificate::currentuser\authroot
PSChildName        : F88015D3F98479E1DA553D24FD42BA3F43886AEF
PSDrive            : cert
PSProvider         : Microsoft.PowerShell.Security\Certificate
PSIsContainer      : False
Archived           : False
Extensions         : {}
FriendlyName       : CW HKT SecureNet CA SGC Root
IssuerName         : System.Security.Cryptography.X509Certificates.X500DistinguishedName
NotAfter           : 10/16/2009 2:59:00 AM
NotBefore          : 6/30/1999 3:00:00 AM
HasPrivateKey      : False
PrivateKey         :
PublicKey          : System.Security.Cryptography.X509Certificates.PublicKey
RawData            : {48, 130, 2, 235...}
SerialNumber       : 00
SubjectName        : System.Security.Cryptography.X509Certificates.X500DistinguishedName
SignatureAlgorithm : System.Security.Cryptography.Oid
Thumbprint         : F88015D3F98479E1DA553D24FD42BA3F43886AEF
Version            : 1
Handle             : 1577256
Issuer             : O=C&W HKT SecureNet CA SGC Root, C=hk
Subject            : O=C&W HKT SecureNet CA SGC Root, C=hk	

Просмотр других дисков
Кроме дисков файловой системы, реестра и сертификатов оболочка Windows PowerShell включает несколько других полезных дисков, в том числе диски псевдонимов (Alias:), поставщика среды (Env:), функций (Function:) и переменных (Variable:). Используйте для их просмотра те же процедуры.
О дисках Windows PowerShell
В основе реализованных в оболочке Windows PowerShell возможностей расширенной навигации лежит концепция дисков Windows PowerShell. 
Диски Windows PowerShell могут быть созданы в любом хранилище данных, доступном в оболочке Windows PowerShell, и могут иметь любые допустимые имена, такие как «C:» или «My Drive» с двоеточием (:). Перемещаться по этим дискам можно так же, как и по диску файловой системы. Однако диски Windows PowerShell доступны только в Windows PowerShell. В Проводнике Windows или командной строке (Cmd.exe) увидеть их или получить к ним доступ нельзя.
В состав оболочки Windows PowerShell входят несколько полезных дисков, поддерживаемых поставщиками Windows PowerShell. Чтобы увидеть список дисков Windows PowerShell, введите следующую команду:
get-psdrive	

Кроме того, пользователи могут создавать собственные диски Windows PowerShell, используя командлет New-PsDrive. Например, чтобы создать диск «MyDocs:» в каталоге My Documents, введите следующую команду: 
new-psdrive -name MyDocs -psprovider FileSystem -root "$home\My Documents"	

После этого диск «MyDocs:» можно использовать так же, как и любой другой диск. Можно сделать его текущим, просмотреть его содержимое и изменить его свойства.
Диски и поставщики
Использовать диски Windows PowerShell в ходе сеанса можно благодаря поставщикам Windows PowerShell — сборкам .NET, которые обеспечивают доступ к данным в специализированном хранилище, позволяя легко просматривать эти данные и управлять ими. Чтобы получить сведения о поставщиках Windows PowerShell, введите следующую команду:
get-help about_psprovider	

Чтобы увидеть список поставщиков Windows PowerShell, введите следующую команду:
get-psprovider	

Чтобы получить список файлов со справочными сведениями о поставщиках, введите следующую команду:
get-help -category provider	

Чтобы получить сведения о конкретном поставщике, введите следующую команду:
get-help <имя-поставщика>	

Пример:
get-help registry	

Настройка Windows PowerShell             
В этом разделе описываются некоторые способы настройки оболочки Windows PowerShell в соответствии с конкретными потребностями.
Исследование политики выполнения
Сценарии обеспечивают пользователям оболочки Windows PowerShell широчайшие возможности, но их можно использовать со злым умыслом. Для защиты пользовательских данных и целостности операционной системы в оболочке Windows PowerShell реализованы некоторые средства обеспечения безопасности, в том числе политика выполнения. 
Политика выполнения оболочки Windows PowerShell определяет, можно ли выполнять сценарии, и если да, должны ли они быть подписаны цифровой подписью. Кроме того, она определяет, можно ли загружать конфигурационные файлы.
Политика выполнения по умолчанию (Restricted) обеспечивает максимальную защиту из всех политик. Она не разрешает выполнять сценарии и загружать какие-либо конфигурационные файлы, в том числе профиль Windows PowerShell. Тем не менее, при этом можно работать с оболочкой Windows PowerShell в интерактивном режиме.
Если нужно выполнять сценарии или загружать конфигурационные файлы, политику выполнения можно изменить. Чтобы получить сведения об этом и соответствующие инструкции, выполните следующую команду:
get-help about_signing	

Чтобы найти политику выполнения, введите следующую команду:
get-executionpolicy	

Для изменения политики выполнения используйте командлет Set-ExecutionPolicy. Например, чтобы сделать действующей политикой выполнения политику RemoteSigned, введите следующую команду:
set-executionpolicy remotesigned	

Политика выполнения Windows PowerShell хранится в реестре Windows и не удаляется даже при переустановке оболочки Windows PowerShell.
Профили Windows PowerShell
При добавлении псевдонимов, функций и переменных в оболочке Windows PowerShell они на самом деле добавляются только в текущий сеанс Windows PowerShell. При завершении сеанса или закрытии Windows PowerShell сделанные изменения утрачивают силу.
Для сохранения изменений можно создать профиль Windows PowerShell и добавить в него нужные псевдонимы, функции и переменные. Профиль загружается при каждом запуске Windows PowerShell.
Чтобы можно было загрузить профиль, действующая политика выполнения Windows PowerShell должна допускать загрузку конфигурационных файлов. Если она не позволяет загружать конфигурационные файлы, попытка загрузить профиль не удастся и оболочка Windows PowerShell отобразит сообщение об ошибке.
Основные сведения о профилях
Оболочка Windows PowerShell позволяет пользователю иметь четыре разных профиля. Ниже они указаны в том порядке, в котором они загружаются. Если в конкретной ситуации могут быть использованы несколько профилей, предпочтение отдается более узконаправленному.
·	%windir%\system32\WindowsPowerShell\v1.0\profile.ps1
Действие этого профиля распространяется на всех пользователей и все оболочки.
·	%windir%\system32\WindowsPowerShell\v1.0\ Microsoft.PowerShell_profile.ps1
Действие этого профиля распространяется на всех пользователей, но только на одну оболочку — Microsoft.PowerShell.
·	%UserProfile%\My Documents\WindowsPowerShell\profile.ps1
Действие этого профиля распространяется только на текущего пользователя и на все оболочки. 
·	%UserProfile%\\My Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
Действие этого профиля распространяется только на текущего пользователя и только на оболочку Microsoft.PowerShell.
Создание профиля
Вы можете создавать и распространять профили для обеспечения согласованного представления оболочки Windows PowerShell в крупных средах. 
Автоматически профили не создаются. Чтобы создать профиль, создайте текстовый файл с одним из указанных выше имен в указанном месте. 
Обычно при работе с оболочкой Windows PowerShell используют профиль, специфичный для пользователя и оболочки, который называется пользовательским профилем. Данные о расположении этого профиля хранятся в переменной $profile.
Чтобы узнать, был ли создан пользовательский профиль, введите следующую команду:
test-path $profile	

Если профиль существует, эта команда возвратит True, в противном случае — False.
Чтобы создать пользовательский профиль, введите следующую команду:
new-item -path $profile -itemtype file -force	

Чтобы открыть профиль в «Блокноте», введите следующую команду:
notepad $profile	

Чтобы создать какой-либо из других профилей, например профиль, действие которого распространяется на всех пользователей и все оболочки, введите следующую команду:
new-item -path C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1 -itemtype file -force	

Использовать нотацию «%» для указания переменных среды в оболочке Windows PowerShell нельзя. Используйте для указания переменной среды Windows формат $env:<переменная>, например $env:windir:
new-item -path C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1 -itemtype file -force	

При сохранении профиля, созданного в «Блокноте», не забудьте заключить имя файла в кавычки. Например:
"profile.ps1"	

Если не заключить имя файла в кавычки, «Блокнот» дополнит его расширением TXT и оболочка Windows PowerShell не сможет распознать файл.
Храните в профиле псевдонимы, функции и переменные, используемые чаще всего. Очень полезной является функция, открывающая профиль в любимом текстовом редакторе пользователя. Например, следующая команда создает функцию «pro», которая открывает пользовательский профиль в «Блокноте»:
function pro { notepad $profile }	

Грамотно созданный профиль может упростить использование оболочки Windows PowerShell и администрирование системы.