Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Вы должны реализовать поставщик Windows PowerShell, если ваш продукт или конфигурация предоставляет набор сохраненных данных, например базу данных, которую пользователь хочет перейти или просмотреть. Кроме того, если продукт предоставляет контейнер, даже если он не является многоуровневым контейнером, то имеет смысл реализовать поставщик Windows PowerShell. Например, может потребоваться реализовать поставщик контейнеров Windows PowerShell, если команда командлета Copy, Move, Rename, New или Remove имеет смысл как операция с данными продукта или конфигурации.
Пути Windows PowerShell идентифицируют поставщика
Среда выполнения Windows PowerShell использует пути Windows PowerShell для доступа к соответствующему поставщику Windows PowerShell. Если командлет задает один из этих путей, среда выполнения знает, какой поставщик будет использоваться для доступа к связанному хранилищу данных. К этим путям относятся пути, квалифицированные поставщиком пути, прямые пути поставщика и внутренние пути поставщика. Каждый поставщик Windows PowerShell должен поддерживать один или несколько этих путей.
Дополнительные сведения о путях Windows PowerShell см. в статье о работе Windows PowerShell.
Определение пути Drive-Qualified
Чтобы разрешить пользователю получать доступ к данным, расположенным на физическом диске, поставщик Windows PowerShell должен поддерживать путь к диску. Этот путь начинается с имени диска, за которым следует двоеточие (:) например, mydrive:\abc\bar).
Определение пути Provider-Qualified
Чтобы среда выполнения Windows PowerShell инициализировать и неинициализировать поставщика, поставщик Windows PowerShell должен поддерживать путь к поставщику. Например, FileSystem::\\uncshare\abc\bar — это путь к поставщику файловой системы, предоставленному Windows PowerShell.
Определение пути Provider-Direct
Чтобы разрешить удаленный доступ к поставщику Windows PowerShell, он должен поддерживать прямой путь поставщика для передачи непосредственно поставщику Windows PowerShell для текущего расположения. Например, поставщик Windows PowerShell реестра может использовать \\server\regkeypath в качестве пути прямого поставщика.
Определение пути Provider-Internal
Чтобы разрешить командлету поставщика получать доступ к данным с помощью интерфейсов программирования приложений, отличных от Windows PowerShell, поставщик Windows PowerShell должен поддерживать внутренний путь поставщика. Этот путь указывается после ":"" в пути, заданном поставщиком. Например, внутренний путь поставщика для поставщика Файловой системы Windows PowerShell — \\uncshare\abc\bar.
Изменение сохраненных данных
При переопределении методов, изменяющих базовое хранилище данных, всегда вызывайте метод System.Management.Automation.Provider.CmdletProvider.WriteItemObject* с самой up-to-date версией элемента, измененной этим методом. Инфраструктура поставщика определяет, должен ли объект элемента передаваться в конвейер, например, когда пользователь задает параметр -PassThru. Если получить наиболее up-to-date элемент является дорогостоящей операцией (производительностью), можно проверить свойство Context.PassThru, чтобы определить, нужно ли на самом деле написать полученный элемент.
Выбор базового класса для поставщика
Windows PowerShell предоставляет ряд базовых классов, которые можно использовать для реализации собственного поставщика Windows PowerShell. При разработке поставщика выберите базовый класс, описанный в этом разделе, который наиболее подходит для ваших требований.
Каждый базовый класс поставщика Windows PowerShell предоставляет набор командлетов. В этом разделе описываются командлеты, но они не описывают их параметры.
С помощью состояния сеанса среда выполнения Windows PowerShell делает несколько командлетов расположения доступными для определенных поставщиков Windows PowerShell, таких как Get-Location
, Set-Location
, Pop-Location
и командлеты Push-Location
. Командлет Get-Help
можно использовать для получения сведений об этих командлетах расположения.
Базовый класс КомандлетаProvider
Класс System.Management.Automation.Provider.КомандлетProvider определяет базовый поставщик Windows PowerShell. Этот класс поддерживает объявление поставщика и предоставляет ряд свойств и методов, доступных всем поставщикам Windows PowerShell.
Класс вызывается командлетом Get-PSProvider
для перечисления всех доступных поставщиков сеанса.
Реализация этого командлета предоставляется состоянием сеанса.
Примечание.
Поставщики Windows PowerShell доступны для всех областей языка Windows PowerShell.
Базовый класс DriveCmdletProvider
Класс System.Management.Automation.Provider.DriveCmdletProvider определяет поставщик дисков Windows PowerShell, который поддерживает операции по добавлению новых дисков, удалению существующих дисков и инициализации дисков по умолчанию. Например, поставщик Файловой системы, предоставляемый Windows PowerShell, инициализирует диски для всех подключенных томов, таких как жесткие диски и dvd-диски.
Этот класс является производным от базового класса System.Management.Automation.Provider.КомандлетProvider. В следующей таблице перечислены командлеты, предоставляемые этим классом. Помимо перечисленных, командлет Get-PSDrive
(предоставляемый состоянием сеанса) — это связанный командлет, используемый для получения доступных дисков.
cmdlet | Определение |
---|---|
New-PSDrive |
Создает новый диск для сеанса и передает сведения о диске. |
Remove-PSDrive |
Удаляет диск из сеанса. |
Базовый класс ItemCmdletProvider
Класс System.Management.Automation.Provider.ItemCmdletProvider определяет поставщика элементов Windows PowerShell, выполняющего операции с отдельными элементами хранилища данных, и не предполагает возможности контейнера или навигации. Этот класс является производным от базового класса System.Management.Automation.Provider.DriveCmdletProvider. В следующей таблице перечислены командлеты, предоставляемые этим классом.
cmdlet | Определение |
---|---|
Clear-Item |
Очищает текущее содержимое элементов в указанном расположении и заменяет его значением clear, указанным поставщиком. Этот командлет не передает выходной объект через конвейер, если его PassThru параметр не указан. |
Get-Item |
Извлекает элементы из указанного расположения и передает результирующий объект. |
Invoke-Item |
Вызывает действие по умолчанию для элемента по указанному пути. |
Set-Item |
Задает элемент в указанном расположении с указанным значением. Этот командлет не передает выходной объект через конвейер, если его PassThru параметр не указан. |
Resolve-Path |
Разрешает подстановочные знаки для пути Windows PowerShell и передает сведения о пути. |
Test-Path |
Проверяет указанный путь и возвращает true , если он существует и false в противном случае. Этот командлет реализован для поддержки параметра IsContainer для метода System.Management.Automation.Provider.КомандлетProvider.WriteItemObject*. |
Базовый класс ContainerCmdletProvider
Класс System.Management.Automation.Provider.ContainerCmdletProvider определяет поставщик контейнеров Windows PowerShell, предоставляющий контейнер для элементов хранилища данных пользователю. Помните, что поставщик контейнеров Windows PowerShell можно использовать только в том случае, если в нем есть один контейнер (без вложенных контейнеров). Если есть вложенные контейнеры, необходимо реализовать поставщик навигации Windows PowerShell.
Этот класс является производным от базового класса System.Management.Automation.Provider.ItemCmdletProvider. В следующей таблице определены командлеты, реализованные этим классом.
cmdlet | Определение |
---|---|
Copy-Item |
Копирует элементы из одного расположения в другое. Этот командлет не передает выходной объект через конвейер, если его PassThru параметр не указан. |
Get-ChildItem |
Извлекает дочерние элементы в указанном расположении и передает их в виде объектов. |
New-Item |
Создает новые элементы в указанном расположении и передает результирующий объект. |
Remove-Item |
Удаляет элементы из указанного расположения. |
Rename-Item |
Переименовывает элемент в указанном расположении. Этот командлет не передает выходной объект через конвейер, если его PassThru параметр не указан. |
Базовый класс NavigationCmdletProvider
Класс System.Management.Automation.Provider.NavigationCmdletProvider определяет поставщик навигации Windows PowerShell, который выполняет операции для элементов, использующих несколько контейнеров. Этот класс является производным от базового класса System.Management.Automation.Provider.ContainerCmdletProvider. В следующей таблице перечислены командлеты, предоставляемые этим классом.
cmdlet | Определение |
---|---|
Combine-Path |
Объединяет два пути в один путь, используя разделитель для конкретного поставщика между путями. Этот командлет передает строки. |
Move-Item |
Перемещает элементы в указанное расположение. Этот командлет не передает выходной объект через конвейер, если его PassThru параметр не указан. |
Связанный командлет — это базовый командлет Parse-Path, предоставляемый Windows PowerShell. Этот командлет можно использовать для анализа пути Windows PowerShell для поддержки параметра Parent
. Он передает строку родительского пути.
Выбор интерфейсов поставщика для поддержки
Помимо производных от одного из базовых классов Windows PowerShell, поставщик Windows PowerShell может поддерживать другие функции, производные от одного или нескольких следующих интерфейсов поставщика. В этом разделе определяются эти интерфейсы и командлеты, поддерживаемые каждым из них. Он не описывает параметры для командлетов, поддерживаемых интерфейсом. Сведения о параметрах командлета доступны в Интернете с помощью командлетов Get-Command
и Get-Help
.
IContentCmdletProvider
Интерфейс System.Management.Automation.Provider.IContentCmdletProvider определяет поставщика контента, выполняющего операции с содержимым элемента данных. В следующей таблице перечислены командлеты, предоставляемые этим интерфейсом.
cmdlet | Определение |
---|---|
Add-Content |
Добавляет указанные длины значений к содержимому указанного элемента. Этот командлет не передает выходной объект через конвейер, если его PassThru параметр не указан. |
Clear-Content |
Задает содержимое указанного элемента значение clear. Этот командлет не передает выходной объект через конвейер, если его PassThru параметр не указан. |
Get-Content |
Извлекает содержимое указанных элементов и передает результирующий объект. |
Set-Content |
Заменяет существующее содержимое для указанных элементов. Этот командлет не передает выходной объект через конвейер, если его PassThru параметр не указан. |
IPropertyCmdletProvider
Интерфейс System.Management.Automation.Provider.IPropertyCmdletProvider определяет поставщик Windows PowerShell, который выполняет операции по свойствам элементов в хранилище данных. В следующей таблице перечислены командлеты, предоставляемые этим интерфейсом.
Примечание.
Параметр Path
в этих командлетах указывает путь к элементу вместо идентификации свойства.
cmdlet | Определение |
---|---|
Clear-ItemProperty |
Задает свойства указанных элементов значением clear. Этот командлет не передает выходной объект через конвейер, если его PassThru параметр не указан. |
Get-ItemProperty |
Извлекает свойства из указанных элементов и передает результирующий объект. |
Set-ItemProperty |
Задает свойства указанных элементов с указанными значениями. Этот командлет не передает выходной объект через конвейер, если его PassThru параметр не указан. |
IDynamicPropertyCmdletProvider
Интерфейс System.Management.Automation.Provider.IDynamicPropertyCmdletProvider, производный от System.Management.Automation.Provider.IPropertyCmdletProvider, определяет поставщик, указывающий динамические параметры для поддерживаемых командлетов. Этот тип поставщика обрабатывает операции, для которых свойства можно определить во время выполнения, например новую операцию свойства. Такие операции недоступны для элементов с статически определенными свойствами. В следующей таблице перечислены командлеты, предоставляемые этим интерфейсом.
cmdlet | Определение |
---|---|
Copy-ItemProperty |
Копирует свойство из указанного элемента в другой элемент. Этот командлет не передает выходной объект через конвейер, если его PassThru параметр не указан. |
Move-ItemProperty |
Перемещает свойство из указанного элемента в другой элемент. Этот командлет не передает выходной объект через конвейер, если его PassThru параметр не указан. |
New-ItemProperty |
Создает свойство для указанных элементов и передает результирующий объект. |
Remove-ItemProperty |
Удаляет свойство для указанных элементов. |
Rename-ItemProperty |
Переименовывает свойство указанных элементов. Этот командлет не передает выходной объект через конвейер, если его PassThru параметр не указан. |
ISecurityDescriptorCmdletProvider
Интерфейс System.Management.Automation.Provider.ISecurityDescriptorCmdletProvider добавляет функции дескриптора безопасности к поставщику. Этот интерфейс позволяет пользователю получать и задавать сведения о дескрипторе безопасности для элемента в хранилище данных. В следующей таблице перечислены командлеты, предоставляемые этим интерфейсом.
cmdlet | Определение |
---|---|
Get-Acl |
Извлекает сведения, содержащиеся в списке управления доступом (ACL), который является частью дескриптора безопасности, используемого для защиты ресурсов операционной системы, например файла или объекта. |
Set-Acl |
Задает сведения для ACL. Он находится в виде экземпляра System.Security.AccessControl.ObjectSecurity в элементах, назначенных для указанного пути. Этот командлет может задать сведения о файлах, ключах и подразделах реестра или любом другом элементе поставщика, если поставщик Windows PowerShell поддерживает настройку сведений о безопасности. |
См. также
создание поставщиков Windows PowerShell
принцип работы Windows PowerShell
пакета SDK для Windows PowerShell
PowerShell