Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: Windows PowerShell 2.0, Windows PowerShell 3.0
В следующем разделе описывается установка пакета SDK PowerShell в разных версиях Windows.
Установка пакета SDK для Windows PowerShell 3.0 для Windows 8 и Windows Server 2012
Windows PowerShell 3.0 автоматически устанавливается с Windows 8 и Windows Server 2012. Кроме того, вы можете скачать и установить эталонные сборки для Windows PowerShell 3.0 в составе пакета SDK для Windows 8. Эти сборки позволяют создавать командлеты, поставщики и хост-программы для Windows PowerShell 3.0. При установке пакета SDK для Windows 8 сборки Windows PowerShell автоматически устанавливаются в папку эталонной сборки в \Program Files (x86)\Reference Assemblies\Microsoft\WindowsPowerShell\3.0
. Дополнительные сведения см. на сайте скачивания пакета SDK для Windows 8. Примеры кода Windows PowerShell также доступны в репозитории powershell-sdk-samples.
Эталонные сборки
Эталонные сборки устанавливаются в следующее расположение по умолчанию: C:\Program Files\Reference Assemblies\Microsoft\WindowsPowerShell\V1.0
.
Примечание.
Код, скомпилированный для сборок Windows PowerShell 2.0, нельзя загрузить в установки Windows PowerShell 1.0. Однако код, скомпилированный для сборок Windows PowerShell 1.0, можно загрузить в установки Windows PowerShell 2.0.
Образцы
Примеры кода устанавливаются в следующее расположение по умолчанию: C:\Program Files\Microsoft SDKs\Windows\v7.0\Samples\sysmgmt\WindowsPowerShell\
. В следующих разделах приводится краткое описание того, что делает каждый пример.
Примеры командлетов
- GetProcessSample01 — показывает, как написать простой командлет, который получает все процессы на локальном компьютере.
- GetProcessSample02 — показывает, как добавлять параметры в командлет. Командлет принимает одно или несколько имен процессов и возвращает соответствующие процессы.
- GetProcessSample03 — показывает, как добавлять параметры, принимаюющие входные данные из конвейера.
- GetProcessSample04 — показывает, как обрабатывать ошибки без прекращения.
- GetProcessSample05 — показывает, как отобразить список указанных процессов.
- SelectObject — показывает, как написать фильтр, чтобы выбрать только определенные объекты.
- SelectString — показывает, как искать файлы для указанных шаблонов.
- StopProcessSample01 — показывает, как реализовать параметр PassThru и как запросить отзыв пользователей вызовами методов ShouldProcess и ShouldContinue. Пользователи указывают параметр PassThru, если они хотят принудительно принудить командлет возвращать объект,
- StopProcessSample02 — показывает, как остановить определенный процесс.
- StopProcessSample03 — показывает, как объявлять псевдонимы для параметров и как поддерживать подстановочные знаки.
- StopProcessSample04 — показывает, как объявлять наборы параметров, объект, который командлет принимает в качестве входных данных, и как указать используемый набор параметров по умолчанию.
Примеры удаленного взаимодействия
- RemoteRunspace01 — показывает, как создать удаленное пространство выполнения, используемое для установки удаленного подключения.
- RemoteRunspacePool01— показывает, как создать удаленный пул пространств выполнения и как одновременно выполнять несколько команд с помощью этого пула.
- Serialization01— показывает, как просмотреть существующий класс .NET и убедиться, что данные из выбранных общедоступных свойств этого класса сохраняются в рамках сериализации или десериализации.
- Serialization02 — показывает, как просмотреть существующий класс .NET и убедиться, что сведения из экземпляра этого класса сохраняются в сериализации или десериализации, если информация недоступна в общедоступных свойствах класса.
- Сериализация03. Показывает, как просмотреть существующий класс .NET и убедиться, что экземпляры этого класса и производных классов десериализуются (регидратируются) в динамические объекты .NET.
Примеры событий
- Event01 — показано, как создать командлет для регистрации событий, исходя из ObjectEventRegistrationBase.
- Event02 — показывает, как получать уведомления о событиях Windows PowerShell, созданных на удаленных компьютерах. В нем используется событие PSEventReceived, предоставляемое через класс Runspace.
Примеры размещения приложений
- Runspace01— показывает, как использовать класс PowerShell для синхронного выполнения командлета
Get-Process
. КомандлетGet-Process
возвращает объекты process для каждого процесса, выполняемого на локальном компьютере. - Runspace02— показывает, как использовать класс PowerShell для запуска
Get-Process
и командлетовSort-Object
синхронно. КомандлетGet-Process
возвращает объекты Process для каждого процесса, выполняемого на локальном компьютере, иSort-Object
сортирует объекты на основе их свойства Id. Результаты этих команд отображаются с помощью элемента управления DataGridView. - Runspace03 — показывает, как использовать класс PowerShell для синхронного выполнения скрипта и как обрабатывать неисправные ошибки. Скрипт получает список имен процессов, а затем извлекает эти процессы. Результаты скрипта, включая все неисключающие ошибки, созданные при выполнении скрипта, отображаются в окне консоли.
- Runspace04— показывает, как использовать класс PowerShell для выполнения команд и как перехватывать завершающие ошибки, возникающие при выполнении команд. Выполняются две команды, а последняя команда передает недопустимый аргумент параметра. В результате не возвращаются объекты и возникает завершающая ошибка.
- Runspace05 — показывает, как добавить оснастку в объект InitialSessionState, чтобы командлет оснастки был доступен при открытии пространства выполнения. Оснастка предоставляет командлет Get-Proc (определенный примером GetProcessSample01), который выполняется синхронно с помощью объекта PowerShell.
- Runspace06 — показывает, как добавить модуль в объект InitialSessionState, чтобы модуль загружался при открытии пространства выполнения. Модуль предоставляет командлет Get-Proc (определенный примером GetProcessSample02), который выполняется синхронно с помощью объекта PowerShell.
- Runspace07 — показывает, как создать пространство выполнения, а затем использовать это пространство выполнения для синхронного выполнения двух командлетов с помощью объекта PowerShell.
- Runspace08 — показывает, как добавлять команды и аргументы в конвейер объекта PowerShell и как выполнять команды синхронно.
- Runspace09 — показывает, как добавить скрипт в конвейер объекта PowerShell и как выполнять скрипт асинхронно. События используются для обработки выходных данных скрипта.
- Runspace10 — показывает, как создать начальное состояние сеанса по умолчанию, как добавить командлет в InitialSessionState, как создать пространство выполнения, использующее начальное состояние сеанса, и как выполнить команду с помощью объекта PowerShell.
- Runspace11 — показывает, как использовать класс ProxyCommand для создания команды прокси,которая вызывает существующий командлет, но ограничивает набор доступных параметров. Затем команда прокси-сервера добавляется в исходное состояние сеанса, которое используется для создания ограниченного пространства выполнения. Это означает, что пользователь может получить доступ к функциям командлета только с помощью команды прокси-сервера.
- PowerShell01 — показывает, как создать ограниченное пространство выполнения с помощью объекта InitialSessionState.
- PowerShell02 — показывает, как использовать пул runspace для одновременного выполнения нескольких команд.
Примеры узлов
- Host01 — показывает, как реализовать хост-приложение, использующее пользовательский узел. В этом примере создается пространство выполнения, использующее пользовательский узел, а затем API PowerShell используется для запуска скрипта, который вызывает
exit
. Затем ведущее приложение просматривает выходные данные скрипта и выводит результаты. - Host02 — показывает, как писать хост-приложение, использующее среду выполнения Windows PowerShell, а также пользовательскую реализацию узла. Ведущее приложение устанавливает язык и региональные параметры узла на немецкий язык, запускает командлет
Get-Process
и отображает результаты, как они будут отображаться с помощью pwrsh.exe, а затем выводит текущие данные и время на немецком языке. - Host03 — показано, как создать интерактивное консольное хост-приложение, которое считывает команды из командной строки, выполняет команды, а затем отображает результаты в консоли.
- Host04 — показано, как создать интерактивное консольное хост-приложение, которое считывает команды из командной строки, выполняет команды, а затем отображает результаты в консоли. Это хост-приложение также поддерживает отображение запросов, позволяющих пользователю указать несколько вариантов.
- Host05 — показано, как создать интерактивное консольное хост-приложение, которое считывает команды из командной строки, выполняет команды, а затем отображает результаты в консоли. Это хост-приложение также поддерживает вызовы удаленных компьютеров с помощью командлетов
Enter-PSSession
иExit-PSSession
. - Host06 — показывает, как создать интерактивное консольное хост-приложение, которое считывает команды из командной строки, выполняет команды, а затем отображает результаты в консоли. Кроме того, в этом примере используются API-интерфейсы tokenizer, чтобы указать цвет текста, введенного пользователем.
Примеры поставщика
AccessDBProviderSample01— показывает, как объявить класс поставщика, производный непосредственно от класса КомандлетProvider. Она включена здесь только для полноты.
AccessDBProviderSample02— показывает, как перезаписать методы NewDrive и RemoveDrive для поддержки вызовов
New-PSDrive
и командлетовRemove-PSDrive
. Класс поставщика в этом примере является производным от класса DriveCmdletProvider.AccessDBProviderSample03 — показывает, как перезаписать методы GetItem и SetItem для поддержки вызовов командлетов
Get-Item
иSet-Item
. Класс поставщика в этом примере является производным от класса ItemCmdletProvider.AccessDBProviderSample04 — показывает, как перезаписать методы контейнера для поддержки вызовов
Copy-Item
,Get-ChildItem
,New-Item
и командлетовRemove-Item
. Эти методы следует реализовать, когда хранилище данных содержит элементы, которые являются контейнерами. Контейнер — это группа дочерних элементов под общим родительским элементом. Класс поставщика в этом примере является производным от класса ItemCmdletProvider.AccessDBProviderSample05— показывает, как перезаписать методы контейнера для поддержки вызовов
Move-Item
и командлетовJoin-Path
. Эти методы должны быть реализованы, когда пользователю необходимо переместить элементы в контейнер и если хранилище данных содержит вложенные контейнеры. Класс поставщика в этом примере является производным от класса NavigationCmdletProvider.AccessDBProviderSample06 — показывает, как перезаписать методы содержимого для поддержки вызовов
Clear-Content
,Get-Content
и командлетовSet-Content
. Эти методы должны быть реализованы, когда пользователю необходимо управлять содержимым элементов в хранилище данных. Класс поставщика в этом примере является производным от класса NavigationCmdletProvider и реализует интерфейс IContentCmdletProvider.
PowerShell