Разработка поставщика Windows PowerShell
если продукт или конфигурация предоставляет набор хранимых данных, например базу данных, которую пользователь хочет перемещать или просматривать, следует реализовать поставщик 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 должен поддерживать путь, определенный диском. Этот путь начинается с имени диска, за которым следует двоеточие (:), например мидриве: \ абк\бар.
Определение пути Provider-Qualified
чтобы разрешить среде выполнения Windows PowerShell инициализировать и деинициализировать поставщик, поставщик Windows PowerShell должен поддерживать путь, определенный поставщиком. Например, файл FileSystem:: \ \ункшаре\абк\бар является квалифицированным поставщиком для поставщика FileSystem, предоставляемого Windows PowerShell.
Определение пути Provider-Direct
чтобы разрешить удаленный доступ к поставщику Windows PowerShell, он должен поддерживать прямой путь поставщика для передачи непосредственно поставщику Windows PowerShell для текущего расположения. например, поставщик Windows PowerShell реестра может использовать \ \сервер\регкэйпас в качестве прямого пути поставщика.
Определение пути Provider-Internal
чтобы предоставить командлету поставщика доступ к данным с помощью не Windows PowerShell программных интерфейсов (api), поставщик Windows PowerShell должен поддерживать внутренний путь поставщика. Этот путь указывается после "::" в пути, уточненном поставщиком. например, поставщик — внутренний путь для Windows PowerShell поставщика файловой системы — \ \ункшаре\абк\бар.
Изменение сохраненных данных
При переопределении методов, изменяющих базовое хранилище данных, всегда вызывайте метод System. Management. Automation. Provider. кмдлетпровидер. вритеитемобжект * с самой последней версией элемента, измененного этим методом. Инфраструктура поставщика определяет, нужно ли передавать объект item в конвейер, например, когда пользователь указывает параметр-PassThru. Если получение наиболее актуального элемента является дорогостоящей операцией (с учетом производительности), можно протестировать свойство Context. PassThru, чтобы определить, действительно ли нужно писать получившийся элемент.
Выбор базового класса для поставщика
Windows PowerShell предоставляет ряд базовых классов, которые можно использовать для реализации собственного поставщика Windows PowerShell. При проектировании поставщика выберите базовый класс, описанный в этом разделе, который наиболее подходит для ваших требований.
каждый базовый класс Windows PowerShell поставщика делает доступным набор командлетов. В этом разделе описываются командлеты, но они не описывают их параметры.
с помощью состояния сеанса среда выполнения Windows PowerShell делает несколько командлетов location доступными для определенных поставщиков Windows PowerShell, таких как Get-Location
Set-Location
командлеты,, Pop-Location
и Push-Location
. Get-Help
Для получения сведений об этих командлетах расположения можно использовать командлет.
Базовый класс Кмдлетпровидер
класс System. Management. Automation. Provider. кмдлетпровидер определяет базовый поставщик Windows PowerShell. этот класс поддерживает объявление поставщика и предоставляет ряд свойств и методов, доступных для всех поставщиков Windows PowerShell.
Класс вызывается Get-PSProvider
командлетом для вывода списка всех доступных поставщиков для сеанса.
Реализация этого командлета предоставляется состоянием сеанса.
Примечание
поставщики Windows PowerShell доступны для всех областей языка Windows PowerShell.
Базовый класс Дривекмдлетпровидер
класс System. Management. Automation. Provider. дривекмдлетпровидер определяет поставщик Windows PowerShellного диска, который поддерживает операции по добавлению новых дисков, удалению существующих дисков и инициализации дисков по умолчанию. например, поставщик FileSystem, предоставляемый Windows PowerShell, инициализирует диски для всех подключенных томов, таких как жесткие диски и дисководы CD/DVD.
Этот класс является производным от базового класса System. Management. Automation. Provider. кмдлетпровидер . В следующей таблице перечислены командлеты, предоставляемые этим классом. Помимо указанных выше, Get-PSDrive
командлет (предоставленный состоянием сеанса) является связанным командлетом, который используется для получения доступных дисков.
Командлет | Определение |
---|---|
New-PSDrive |
Создание нового диска для сеанса и потоковая передача сведений о нем. |
Remove-PSDrive |
Удаляет диск из сеанса. |
Базовый класс Итемкмдлетпровидер
класс System. Management. Automation. Provider. итемкмдлетпровидер определяет поставщик Windows PowerShell элементов, который выполняет операции с отдельными элементами хранилища данных и не предполагает использование контейнеров и возможностей навигации. Этот класс является производным от базового класса System. Management. Automation. Provider. дривекмдлетпровидер . В следующей таблице перечислены командлеты, предоставляемые этим классом.
Командлет | Определение |
---|---|
Clear-Item |
Очищает текущее содержимое элементов в указанном расположении и заменяет его значением "Clear", заданным поставщиком. Этот командлет не передает выходной объект через конвейер, если не PassThru указан параметр. |
Get-Item |
Извлекает элементы из указанного расположения и передает в поток результирующие объекты. |
Invoke-Item |
Вызывает действие по умолчанию для элемента по указанному пути. |
Set-Item |
Задает элемент в указанном расположении с указанным значением. Этот командлет не передает выходной объект через конвейер, если не PassThru указан параметр. |
Resolve-Path |
разрешает подстановочные знаки для Windows PowerShell пути и сведений о пути к потокам. |
Test-Path |
Проверяет по указанному пути и возвращает, true если он существует, и false в противном случае. Этот командлет реализуется для поддержки IsContainer параметра для метода System. Management. Automation. Provider. Кмдлетпровидер. вритеитемобжект * . |
Базовый класс Контаинеркмдлетпровидер
класс System. Management. Automation. Provider. контаинеркмдлетпровидер определяет поставщик контейнера Windows PowerShell, который предоставляет пользователю контейнер для элементов хранилища данных. имейте в виду, что поставщик контейнера Windows PowerShell можно использовать только при наличии одного контейнера (без вложенных контейнеров) с элементами в нем. при наличии вложенных контейнеров необходимо реализовать Windows PowerShellный поставщик навигации.
Этот класс является производным от базового класса System. Management. Automation. Provider. итемкмдлетпровидер . В следующей таблице описаны командлеты, реализуемые этим классом.
Командлет | Определение |
---|---|
Copy-Item |
Копирует элементы из одного расположения в другое. Этот командлет не передает выходной объект через конвейер, если не PassThru указан параметр. |
Get-Childitem |
Извлекает дочерние элементы в указанном расположении и передает их в поток как объекты. |
New-Item |
Создает новые элементы в указанном расположении и осуществляет потоковую передачу результирующего объекта. |
Remove-Item |
Удаляет элементы из указанного расположения. |
Rename-Item |
Переименовывает элемент в указанном расположении. Этот командлет не передает выходной объект через конвейер, если не PassThru указан параметр. |
Базовый класс NavigationCmdletProvider
класс System. Management. Automation. Provider. Navigationcmdletprovider определяет поставщик навигации Windows PowerShell, который выполняет операции для элементов, использующих более одного контейнера. Этот класс является производным от базового класса System. Management. Automation. Provider. контаинеркмдлетпровидер . В следующей таблице перечислены командлеты, предоставляемые этим классом.
Командлет | Определение |
---|---|
Combine-Path | Объединяет два пути в один путь с помощью разделителя, зависящего от поставщика, между путями. Этот командлет осуществляет потоковую передачу строк. |
Move-Item |
Перемещает элементы в указанное место. Этот командлет не передает выходной объект через конвейер, если не PassThru указан параметр. |
Связанный командлет — это базовый командлет Parse-Path, предоставляемый Windows PowerShell. этот командлет можно использовать для синтаксического анализа пути Windows PowerShell для поддержки Parent
параметра. Он создает потоковую строку родительского пути.
Выберите интерфейсы поставщика для поддержки
помимо наследования от одного из базовых классов Windows PowerShell, поставщик Windows PowerShell может поддерживать другие функции путем наследования от одного или нескольких из следующих интерфейсов поставщика. В этом разделе определяются эти интерфейсы и командлеты, поддерживаемые каждым из них. Он не описывает параметры для командлетов, поддерживаемых интерфейсом. Сведения о параметрах командлета доступны в Интернете с помощью Get-Command
Get-Help
командлетов и.
иконтенткмдлетпровидер
Интерфейс System. Management. Automation. Provider. иконтенткмдлетпровидер определяет поставщик содержимого, который выполняет операции с содержимым элемента данных. В следующей таблице перечислены командлеты, предоставляемые этим интерфейсом.
Командлет | Определение |
---|---|
Add-Content |
Добавляет указанную длину значений к содержимому указанного элемента. Этот командлет не передает выходной объект через конвейер, если не PassThru указан параметр. |
Clear-Content |
Задает для содержимого указанного элемента значение "Clear". Этот командлет не передает выходной объект через конвейер, если не PassThru указан параметр. |
Get-Content |
Извлекает содержимое указанных элементов и передает в поток результирующие объекты. |
Set-Content |
Заменяет существующее содержимое для указанных элементов. Этот командлет не передает выходной объект через конвейер, если не PassThru указан параметр. |
ипропертикмдлетпровидер
интерфейс System. Management. Automation. Provider. ипропертикмдлетпровидер определяет свойство Windows PowerShell поставщика, которое выполняет операции со свойствами элементов в хранилище данных. В следующей таблице перечислены командлеты, предоставляемые этим интерфейсом.
Примечание
Path
Параметр в этих командлетах указывает путь к элементу, а не определяет свойство.
Командлет | Определение |
---|---|
Clear-ItemProperty |
Задает для свойств указанных элементов значение "Clear". Этот командлет не передает выходной объект через конвейер, если не PassThru указан параметр. |
Get-ItemProperty |
Извлекает свойства из указанных элементов и передает в поток результирующие объекты. |
Set-ItemProperty |
Задает свойства указанных элементов с указанными значениями. Этот командлет не передает выходной объект через конвейер, если не PassThru указан параметр. |
идинамикпропертикмдлетпровидер
Интерфейс System. Management. Automation. Provider. идинамикпропертикмдлетпровидер , производный от System. Management. Automation. Provider. ипропертикмдлетпровидер, определяет поставщик, указывающий динамические параметры для поддерживаемых командлетов. Поставщик этого типа обрабатывает операции, для которых свойства могут быть определены во время выполнения, например, с новой операцией свойства. Такие операции невозможны для элементов, имеющих статически определенные свойства. В следующей таблице перечислены командлеты, предоставляемые этим интерфейсом.
Командлет | Определение |
---|---|
Copy-ItemProperty |
Копирует свойство из указанного элемента в другой элемент. Этот командлет не передает выходной объект через конвейер, если не PassThru указан параметр. |
Move-ItemProperty |
Перемещает свойство из указанного элемента в другой элемент. Этот командлет не передает выходной объект через конвейер, если не PassThru указан параметр. |
New-ItemProperty |
Создает свойство для указанных элементов и передает в поток результирующие объекты. |
Remove-ItemProperty |
Удаляет свойство для указанных элементов. |
Rename-ItemProperty |
Переименовывает свойство указанных элементов. Этот командлет не передает выходной объект через конвейер, если не PassThru указан параметр. |
исекуритидескрипторкмдлетпровидер
Интерфейс System. Management. Automation. Provider. исекуритидескрипторкмдлетпровидер добавляет к поставщику функциональные возможности дескриптора безопасности. Этот интерфейс позволяет пользователю получить и задать сведения о дескрипторе безопасности для элемента в хранилище данных. В следующей таблице перечислены командлеты, предоставляемые этим интерфейсом.
Командлет | Определение |
---|---|
Get-Acl |
Извлекает сведения, содержащиеся в списке управления доступом (ACL), который является частью дескриптора безопасности, используемого для защиты ресурсов операционной системы, например файла или объекта. |
Set-Acl |
Задает сведения для ACL. Он представлен в виде экземпляра System. Security. AccessControl. обжектсекурити для элементов, указанных для указанного пути. этот командлет может задавать сведения о файлах, ключах и подразделах в реестре или любом другом элементе поставщика, если поставщик Windows PowerShell поддерживает настройку сведений о безопасности. |
См. также:
создание поставщиков Windows PowerShell