Compartilhar via


Criando seu provedor do Windows PowerShell

Você deve implementar um provedor do Windows PowerShell se seu produto ou configuração expor um conjunto de dados armazenados, como um banco de dados que o usuário deseja navegar ou procurar. Além disso, se o produto fornecer um contêiner, mesmo que não seja um contêiner de vários níveis, fará sentido implementar um provedor do Windows PowerShell. Por exemplo, talvez você queira implementar um provedor de contêineres do Windows PowerShell se o verbo do cmdlet Copiar, Mover, Renomear, Novo ou Remover fizer sentido como uma operação em seus dados de configuração ou produto.

Caminhos do Windows PowerShell identificam seu provedor

O runtime do Windows PowerShell usa caminhos do Windows PowerShell para acessar o provedor apropriado do Windows PowerShell. Quando um cmdlet especifica um desses caminhos, o runtime sabe qual provedor usar para acessar o armazenamento de dados associado. Esses caminhos incluem caminhos qualificados por unidade, caminhos qualificados pelo provedor, caminhos diretos do provedor e caminhos internos do provedor. Cada provedor do Windows PowerShell deve dar suporte a um ou mais desses caminhos.

Para obter mais informações sobre caminhos do Windows PowerShell, consulte Como o Windows PowerShell funciona.

Definindo um caminho de Drive-Qualified

Para permitir que o usuário acesse dados localizados em uma unidade física, seu provedor do Windows PowerShell deve dar suporte a um caminho qualificado por unidade. Esse caminho começa com o nome da unidade seguido de dois-pontos (:), por exemplo, mydrive:\abc\bar.

Definindo um caminho de Provider-Qualified

Para permitir que o runtime do Windows PowerShell inicialize e não inicialize o provedor, seu provedor do Windows PowerShell deve dar suporte a um caminho qualificado pelo provedor. Por exemplo, FileSystem::\\uncshare\abc\bar é o caminho qualificado pelo provedor para o provedor FileSystem fornecido pelo Windows PowerShell.

Definindo um caminho de Provider-Direct

Para permitir o acesso remoto ao seu provedor do Windows PowerShell, ele deve dar suporte a um caminho direto do provedor para passar diretamente para o provedor do Windows PowerShell para o local atual. Por exemplo, o provedor do Windows PowerShell do registro pode usar \\server\regkeypath como um caminho direto do provedor.

Definindo um caminho de Provider-Internal

Para permitir que o cmdlet do provedor acesse dados usando APIs (interfaces de programação de aplicativos) não Windows PowerShell, seu provedor do Windows PowerShell deve dar suporte a um caminho interno do provedor. Esse caminho é indicado após "::" no caminho qualificado pelo provedor. Por exemplo, o caminho interno do provedor para o provedor do Windows PowerShell do FileSystem é \\uncshare\abc\bar.

Alterando dados armazenados

Ao substituir métodos que modificam o armazenamento de dados subjacente, sempre chame o método System.Management.Automation.Provider.CmdletProvider.WriteItemObject* com a versão mais up-to-date do item alterada por esse método. A infraestrutura do provedor determina se o objeto de item precisa ser passado para o pipeline, como quando o usuário especifica o parâmetro -PassThru. Se recuperar o item mais up-todata for uma operação dispendiosa (em termos de desempenho), você poderá testar a propriedade Context.PassThru para determinar se realmente precisa gravar o item resultante.

Escolher uma classe base para seu provedor

O Windows PowerShell fornece várias classes base que você pode usar para implementar seu próprio provedor do Windows PowerShell. Ao criar um provedor, escolha a classe base, descrita nesta seção, que é mais adequada aos seus requisitos.

Cada classe base do provedor do Windows PowerShell disponibiliza um conjunto de cmdlets. Esta seção descreve os cmdlets, mas não descreve seus parâmetros.

Usando o estado da sessão, o runtime do Windows PowerShell disponibiliza vários cmdlets de localização para determinados provedores do Windows PowerShell, como os cmdlets Get-Location, Set-Location, Pop-Locatione Push-Location. Você pode usar o cmdlet Get-Help para obter informações sobre esses cmdlets de localização.

Classe base CmdletProvider

A classe System.Management.Automation.Provider.CmdletProvider define um provedor básico do Windows PowerShell. Essa classe dá suporte à declaração do provedor e fornece uma série de propriedades e métodos que estão disponíveis para todos os provedores do Windows PowerShell. A classe é invocada pelo cmdlet Get-PSProvider para listar todos os provedores disponíveis para uma sessão. A implementação desse cmdlet é fornecida pelo estado da sessão.

Observação

Os provedores do Windows PowerShell estão disponíveis para todos os escopos de linguagem do Windows PowerShell.

Classe base DriveCmdletProvider

A classe System.Management.Automation.Provider.DriveCmdletProvider define um provedor de unidade do Windows PowerShell que dá suporte a operações para adicionar novas unidades, remover unidades existentes e inicializar unidades padrão. Por exemplo, o provedor FileSystem fornecido pelo Windows PowerShell inicializa unidades para todos os volumes montados, como discos rígidos e unidades de dispositivo CD/DVD.

Essa classe deriva da classe base System.Management.Automation.Provider.CmdletProvider. A tabela a seguir lista os cmdlets expostos por essa classe. Além dos listados, o cmdlet Get-PSDrive (exposto pelo estado da sessão) é um cmdlet relacionado que é usado para recuperar unidades disponíveis.

Cmdlet Definição
New-PSDrive Cria uma nova unidade para a sessão e transmite informações da unidade.
Remove-PSDrive Remove uma unidade da sessão.

Classe base ItemCmdletProvider

A classe System.Management.Automation.Provider.ItemCmdletProvider define um provedor de itens do Windows PowerShell que executa operações nos itens individuais do armazenamento de dados e não pressupõe nenhum contêiner ou funcionalidade de navegação. Essa classe deriva da classe base System.Management.Automation.Provider.DriveCmdletProvider. A tabela a seguir lista os cmdlets expostos por essa classe.

Cmdlet Definição
Clear-Item Limpa o conteúdo atual dos itens no local especificado e o substitui pelo valor "clear" especificado pelo provedor. Esse cmdlet não passa um objeto de saída pelo pipeline, a menos que seu parâmetro PassThru seja especificado.
Get-Item Recupera itens do local especificado e transmite os objetos resultantes.
Invoke-Item Invoca a ação padrão para o item no caminho especificado.
Set-Item Define um item no local especificado com o valor indicado. Esse cmdlet não passa um objeto de saída pelo pipeline, a menos que seu parâmetro PassThru seja especificado.
Resolve-Path Resolve os curingas de um caminho do Windows PowerShell e transmite informações de caminho.
Test-Path Testa o caminho especificado e retorna true se ele existir e false caso contrário. Esse cmdlet é implementado para dar suporte ao parâmetro IsContainer para o método System.Management.Automation.Provider.CmdletProvider.WriteItemObject* .

Classe base ContainerCmdletProvider

A classe System.Management.Automation.Provider.ContainerCmdletProvider define um provedor de contêiner do Windows PowerShell que expõe um contêiner, para itens de armazenamento de dados, para o usuário. Lembre-se de que um provedor de contêiner do Windows PowerShell só pode ser usado quando há um contêiner (nenhum contêiner aninhado) com itens nele. Se houver contêineres aninhados, você deverá implementar um provedor de navegação do Windows PowerShell.

Essa classe deriva da classe base System.Management.Automation.Provider.ItemCmdletProvider. A tabela a seguir define os cmdlets implementados por essa classe.

Cmdlet Definição
Copy-Item Copia itens de um local para outro. Esse cmdlet não passa um objeto de saída pelo pipeline, a menos que seu parâmetro PassThru seja especificado.
Get-ChildItem Recupera os itens filho no local especificado e os transmite como objetos.
New-Item Cria novos itens no local especificado e transmite o objeto resultante.
Remove-Item Remove itens do local especificado.
Rename-Item Renomeia um item no local especificado. Esse cmdlet não passa um objeto de saída pelo pipeline, a menos que seu parâmetro PassThru seja especificado.

A classe System.Management.Automation.Provider.NavigationCmdletProvider define um provedor de navegação do Windows PowerShell que executa operações para itens que usam mais de um contêiner. Essa classe deriva da classe base System.Management.Automation.Provider.ContainerCmdletProvider. A tabela a seguir lista os cmdlets expostos por essa classe.

Cmdlet Definição
Combine-Path Combina dois caminhos em um único caminho, usando um delimitador específico do provedor entre caminhos. Esse cmdlet transmite cadeias de caracteres.
Move-Item Move itens para o local especificado. Esse cmdlet não passa um objeto de saída pelo pipeline, a menos que seu parâmetro PassThru seja especificado.

Um cmdlet relacionado é o cmdlet Parse-Path básico fornecido pelo Windows PowerShell. Esse cmdlet pode ser usado para analisar um caminho do Windows PowerShell para dar suporte ao parâmetro Parent. Ele transmite a cadeia de caracteres de caminho pai.

Selecionar interfaces de provedor para dar suporte

Além de derivar de uma das classes base do Windows PowerShell, o provedor do Windows PowerShell pode dar suporte a outras funcionalidades derivando de uma ou mais das interfaces de provedor a seguir. Esta seção define essas interfaces e os cmdlets compatíveis com cada uma delas. Ele não descreve os parâmetros para os cmdlets compatíveis com a interface. As informações do parâmetro cmdlet estão disponíveis online usando os cmdlets Get-Command e Get-Help.

IContentCmdletProvider

A interface System.Management.Automation.Provider.IContentCmdletProvider define um provedor de conteúdo que executa operações no conteúdo de um item de dados. A tabela a seguir lista os cmdlets expostos por essa interface.

Cmdlet Definição
Add-Content Acrescenta os comprimentos de valor indicados ao conteúdo do item especificado. Esse cmdlet não passa um objeto de saída pelo pipeline, a menos que seu parâmetro PassThru seja especificado.
Clear-Content Define o conteúdo do item especificado como o valor "clear". Esse cmdlet não passa um objeto de saída pelo pipeline, a menos que seu parâmetro PassThru seja especificado.
Get-Content Recupera o conteúdo dos itens especificados e transmite os objetos resultantes.
Set-Content Substitui o conteúdo existente para os itens especificados. Esse cmdlet não passa um objeto de saída pelo pipeline, a menos que seu parâmetro PassThru seja especificado.

IPropertyCmdletProvider

A interface System.Management.Automation.Provider.IPropertyCmdletProvider define uma propriedade do provedor do Windows PowerShell que executa operações nas propriedades dos itens no armazenamento de dados. A tabela a seguir lista os cmdlets expostos por essa interface.

Observação

O parâmetro Path nesses cmdlets indica um caminho para um item em vez de identificar uma propriedade.

Cmdlet Definição
Clear-ItemProperty Define as propriedades dos itens especificados como o valor "clear". Esse cmdlet não passa um objeto de saída pelo pipeline, a menos que seu parâmetro PassThru seja especificado.
Get-ItemProperty Recupera propriedades dos itens especificados e transmite os objetos resultantes.
Set-ItemProperty Define as propriedades dos itens especificados com os valores indicados. Esse cmdlet não passa um objeto de saída pelo pipeline, a menos que seu parâmetro PassThru seja especificado.

IDynamicPropertyCmdletProvider

A interface System.Management.Automation.Provider.IDynamicPropertyCmdletProvider, derivada de System.Management.Automation.Provider.IPropertyCmdletProvider, define um provedor que especifica parâmetros dinâmicos para seus cmdlets com suporte. Esse tipo de provedor manipula operações para as quais as propriedades podem ser definidas em tempo de execução, por exemplo, uma nova operação de propriedade. Essas operações não são possíveis em itens com propriedades definidas estaticamente. A tabela a seguir lista os cmdlets expostos por essa interface.

Cmdlet Definição
Copy-ItemProperty Copia uma propriedade do item especificado para outro item. Esse cmdlet não passa um objeto de saída pelo pipeline, a menos que seu parâmetro PassThru seja especificado.
Move-ItemProperty Move uma propriedade do item especificado para outro item. Esse cmdlet não passa um objeto de saída pelo pipeline, a menos que seu parâmetro PassThru seja especificado.
New-ItemProperty Cria uma propriedade nos itens especificados e transmite os objetos resultantes.
Remove-ItemProperty Remove uma propriedade para os itens especificados.
Rename-ItemProperty Renomeia uma propriedade dos itens especificados. Esse cmdlet não passa um objeto de saída pelo pipeline, a menos que seu parâmetro PassThru seja especificado.

ISecurityDescriptorCmdletProvider

A interface System.Management.Automation.Provider.ISecurityDescriptorCmdletProvider adiciona funcionalidade de descritor de segurança a um provedor. Essa interface permite que o usuário obtenha e defina informações de descritor de segurança para um item no armazenamento de dados. A tabela a seguir lista os cmdlets expostos por essa interface.

Cmdlet Definição
Get-Acl Recupera as informações contidas em uma ACL (lista de controle de acesso), que faz parte de um descritor de segurança usado para proteger recursos do sistema operacional, por exemplo, um arquivo ou um objeto.
Set-Acl Define as informações de uma ACL. Ele está na forma de uma instância de System.Security.AccessControl.ObjectSecurity nos itens designados para o caminho especificado. Esse cmdlet pode definir informações sobre arquivos, chaves e subchaves no registro ou qualquer outro item de provedor, se o provedor do Windows PowerShell der suporte à configuração de informações de segurança.

Consulte Também

criando provedores do Windows PowerShell

como o Windows PowerShell funciona

do SDK do Windows PowerShell