Поделиться через


Общие сведения о поставщике Windows PowerShell

Поставщик Windows PowerShell позволяет предоставлять любое хранилище данных как файловую систему, как если бы он был подключенным диском. Например, встроенный поставщик реестра позволяет перемещаться по реестру, как вы будете перемещаться по c диску компьютера. Поставщик также может переопределить командлеты Item (например, Get-Item, Set-Itemи т. д.), чтобы данные в хранилище данных можно обрабатывать как файлы и каталоги при переходе к файловой системе. Дополнительные сведения о поставщиках и дисках и встроенных поставщиках в Windows PowerShell см. в about_Providers.

Поставщики и диски

Поставщик определяет логику, которая используется для доступа, навигации и редактирования хранилища данных, а диск задает определенную точку входа в хранилище данных (или часть хранилища данных), который является типом, определенным поставщиком. Например, поставщик реестра позволяет получить доступ к кустам и ключам в реестре, а диски HKLM и HKCU указывают соответствующие кусты в реестре. Диски HKLM и HKCU используют поставщик реестра.

При записи поставщика можно указать диски по умолчанию, которые создаются автоматически при доступности поставщика. Вы также определяете метод для создания новых дисков, использующих этот поставщик.

Тип поставщиков

Существует несколько типов поставщиков, каждый из которых обеспечивает другой уровень функциональности. Поставщик реализуется как класс, производный от одного из потомков класса System.Management.Automation.SessionStateCategoryКомандлетProvider. Сведения о различных типах поставщиков см. в типах поставщиков.

Командлеты поставщика

Поставщики могут реализовать методы, соответствующие командлетам, создавая пользовательские поведения для этих командлетов при использовании на диске для этого поставщика. В зависимости от типа поставщика доступны различные наборы командлетов. Полный список командлетов, доступных для настройки в поставщиках, см. в командлетов поставщика.

Пути поставщика

Пользователи перемещаются по дискам поставщика, таким как файловые системы. Из-за этого они ожидают, что синтаксис путей соответствует путям, используемым в навигации файловой системы. Когда пользователь запускает командлет поставщика, он указывает путь к элементу для доступа. Указанный путь можно интерпретировать несколькими способами. Поставщик должен поддерживать один или несколько следующих типов путей.

Пути, отвечающие требованиям к диску

Полный путь — это сочетание имени элемента, контейнера и подконтейнеров, в которых находится элемент, и диска Windows PowerShell, через который осуществляется доступ к элементу. (Диски определяются поставщиком, который используется для доступа к хранилищу данных. Этот путь начинается с имени диска, за которым следует двоеточие (:). Например: Get-ChildItem C:

Путь к поставщику

Чтобы подсистема Windows PowerShell инициализировать и неинициализировать поставщика, поставщик должен поддерживать путь к поставщику. Например, пользователь может инициализировать и неинициализировать поставщика FileSystem, так как он определяет следующий путь к поставщику: FileSystem::\\uncshare\abc\bar.

Прямые пути поставщика

Чтобы разрешить удаленный доступ к поставщику Windows PowerShell, он должен поддерживать прямой путь поставщика для передачи непосредственно поставщику Windows PowerShell для текущего расположения. Например, поставщик Windows PowerShell реестра может использовать \\server\regkeypath в качестве пути прямого поставщика.

Внутренние пути поставщика

Чтобы разрешить командлету поставщика получать доступ к данным с помощью интерфейсов программирования приложений, отличных от Windows PowerShell, поставщик Windows PowerShell должен поддерживать внутренний путь поставщика. Этот путь указывается после ":"" в пути, заданном поставщиком. Например, внутренний путь поставщика для поставщика Файловой системы Windows PowerShell \\uncshare\abc\bar.

Переопределение параметров командлета

Поведение некоторых командлетов, относящихся к поставщику, может быть переопределено поставщиком. Список параметров, которые можно переопределить и как переопределить их в классе поставщика, см. в разделе параметры командлета поставщика

Динамические параметры

Поставщики могут определять динамические параметры, добавляемые в командлет поставщика, когда пользователь задает определенное значение для одного из статических параметров командлета. Поставщик выполняет это путем реализации одного или нескольких динамических методов параметров. Список параметров командлета, которые можно использовать для добавления динамического параметра и методов, используемых для их реализации, см. в разделе динамические параметры командлета поставщика.

Возможности поставщика

Перечисление System.Management.Automation.Provider.ProviderCapabilities определяет ряд возможностей, которые могут поддерживать поставщики. К ним относятся возможность использования подстановочных знаков, фильтров и поддержки транзакций. Чтобы указать возможности для поставщика, добавьте список значений перечисления System.Management.Automation.Provider.ProviderCapabilities, в сочетании с логической операцией OR в качестве свойства System.Management.Automation.Provider.КомандлетProviderAttribute.ProviderCapabilities* (второй параметр атрибута) атрибута System.Management.Automation.Provider.КомандлетProviderAttribut e для вашего класса поставщика. Например, следующий атрибут указывает, что поставщик поддерживает возможности System.Management.Automation.Provider.ProviderCapabilitiesShouldProcess и System.Management.Automation.Provider.ProviderCapabilitiesтранзакций.

[CmdletProvider(RegistryProvider.ProviderName, ProviderCapabilities.ShouldProcess | ProviderCapabilities.Transactions)]

Справка по командлету поставщика

При написании поставщика можно реализовать собственную справку для командлетов поставщика, которые вы поддерживаете. Это включает в себя один раздел справки для каждого командлета поставщика или нескольких версий раздела справки, если командлет поставщика действует по-разному в зависимости от использования динамических параметров. Чтобы поддерживать справку по командлетам поставщика, поставщик должен реализовать интерфейс System.Management.Automation.Provider.ICmdletProviderSupportsHelp.

Подсистема Windows PowerShell вызывает метод System.Management.Automation.Provider.ICmdletProviderSupportsHelp.GetHelpMaml*, чтобы отобразить раздел справки для командлетов поставщика. Модуль предоставляет имя командлета, указанного пользователем при выполнении командлета Get-Help и текущего пути пользователя. Текущий путь необходим, если поставщик реализует разные версии одного и того же командлета поставщика для разных дисков. Метод должен возвращать строку, содержащую XML-код для справки командлета.

Содержимое файла справки записывается с помощью XML PSMAML. Это та же XML-схема, которая используется для написания содержимого справки для автономных командлетов. Добавьте содержимое пользовательской справки командлета в файл справки для поставщика в элементе CmdletHelpPaths. В следующем примере показан элемент command для одного командлета поставщика и показано, как указать имя командлета поставщика. Поддерживает

<CmdletHelpPaths>
  <command:command>
    <command:details>
      <command:name>ProviderCmdletName</command:name>
      <command:verb>Verb</command:verb>
      <command:noun>Noun</command:noun>
    <command:details>
  </command:command>
<CmdletHelpPath>

См. также

функциональные возможности поставщика Windows PowerShell

Командлеты поставщика

написание поставщика Windows PowerShell