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