Compartilhar via


Projetando seu Provedor de PowerShell para Windows

Você deve implementar um provedor de PowerShell do Windows se seu produto ou configuração expor um conjunto de dados armazenados, como um banco de dados que o usuário vai querer navegar ou navegar. Além disso, se seu produto fornecer um container, mesmo que não seja um container multinível, faz sentido implementar um provedor PowerShell para Windows. Por exemplo, você pode querer implementar um provedor de contêineres PowerShell para Windows se o verbo cmdlet Copiar, Mover, Renomear, Novo ou Remover fizer sentido como operação sobre seus dados de produto ou configuração.

Caminhos do Windows PowerShell Identificam seu Provedor

O runtime do Windows PowerShell usa caminhos do Windows PowerShell para acessar o provedor apropriado do Windows. 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 pelo motorista, caminhos qualificados pelo provedor, caminhos diretos pelo provedor e caminhos internos do provedor. Cada provedor de PowerShell do Windows deve suportar um ou mais desses caminhos.

Para mais informações sobre os caminhos do Windows PowerShell, veja Como o Windows PowerShell Funciona.

Definindo um Caminho Drive-Qualified

Para permitir que o usuário acesse dados localizados em um drive físico, seu provedor de PowerShell do Windows deve suportar um caminho qualificado para o drive. Esse caminho começa com o nome do drive seguido por dois pontos (:), por exemplo, mydrive:\abc\bar.

Definindo um Caminho Provider-Qualified

Para permitir que o tempo de execução do Windows PowerShell inicialize e desinicialize o provedor, seu provedor do Windows PowerShell deve suportar um caminho qualificado pelo provedor. Por exemplo, FileSystem::\uncshare\abc\bar é o caminho qualificado pelo provedor para o provedor de FileSystem fornecido pelo Windows PowerShell.

Definindo um Caminho Provider-Direct

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

Definindo um Caminho Provider-Internal

Para permitir que o cmdlet do provedor acesse dados usando interfaces de programação de aplicações (APIs) que não sejam do Windows PowerShell, seu provedor do Windows PowerShell deve suportar um caminho interno ao provedor. Esse caminho é indicado após o "::" no caminho qualificado pelo provedor. Por exemplo, o caminho interno do provedor para o provedor PowerShell do Windows do Sistema de Arquivos é \uncshare\abc\bar.

Alterando os Dados Armazenados

Ao sobrescrever 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-data do item alterada por esse método. A infraestrutura do provedor determina se o objeto item precisa ser passado para o pipeline, como quando o usuário especifica o parâmetro -PassThru. Se recuperar o item com data mais up-tofor uma operação cara (em termos de desempenho), você pode testar a propriedade Context.PassThru para determinar se realmente precisa escrever o item resultante.

Escolha uma Classe Base para o Seu Provedor

O Windows PowerShell oferece várias classes base que você pode usar para implementar seu próprio provedor de PowerShell do Windows. Ao projetar um provedor, escolha a classe base, descrita nesta seção, que se adequa melhor às suas necessidades.

Cada classe base de provedor PowerShell do Windows 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 certos provedores do Windows PowerShell, como os Get-Locationcmdlets , Set-Location, Pop-Location, e Push-Location cmdlets. Você pode usar o Get-Help cmdlet 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 de PowerShell para Windows. Esta classe suporta a declaração do provedor e fornece várias propriedades e métodos disponíveis para todos os provedores Windows PowerShell. A classe é invocada pelo Get-PSProvider cmdlet para listar todos os provedores disponíveis para uma sessão. A implementação desse cmdlet é fornecida pelo estado da sessão.

Observação

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

Classe Base DriveCmdletProvider

A classe System.Management.Automation.Provider.DriveCmdletProvider define um provedor de unidades PowerShell do Windows que suporta operações para adicionar novos discos, remover discos existentes e inicializar discos padrão. Por exemplo, o provedor de Sistema de Arquivos fornecido pelo Windows PowerShell inicializa os discos para todos os volumes que são montados, como discos rígidos e unidades de CD/DVD.

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

Cmdlet Definition
New-PSDrive Cria um novo drive para a sessão e transmite as informações do drive.
Remove-PSDrive Remove um drive da sessão.

ItemCmdletProvider Classe Base

A classe System.Management.Automation.Provider.ItemCmdletProvider define um provedor de itens Windows PowerShell que realiza operações nos itens individuais do armazenamento de dados, e não assume nenhuma capacidade de contêiner ou navegação. Esta classe deriva da classe base System.Management.Automation.Provider.DriveCmdletProvider . A tabela a seguir lista os cmdlets expostos por esta classe.

Cmdlet Definition
Clear-Item Limpa o conteúdo atual dos itens no local especificado e o substitui pelo valor "limpo" especificado pelo provedor. Esse cmdlet não passa um objeto de saída pelo pipeline a menos que seu PassThru parâmetro seja especificado.
Get-Item Recupera itens do local especificado e transmite os objetos resultantes.
Invoke-Item Invoca a ação padrão do item no caminho especificado.
Set-Item Coloca um item na localização especificada com o valor indicado. Esse cmdlet não passa um objeto de saída pelo pipeline a menos que seu PassThru parâmetro seja especificado.
Resolve-Path Resolve os curingas para um caminho do Windows PowerShell e transmite informações do caminho.
Test-Path Testa o caminho especificado e retorna true se ele existe ou false não. Este cmdlet é implementado para suportar o IsContainer parâmetro do método System.Management.Automation.Provider.CmdletProvider.WriteItemObject* .

Classe Base ContainerCmdletProvider

A classe System.Management.Automation.Provider.ContainerCmdletProvider define um provedor de contêineres Windows PowerShell que expõe um contêiner, para itens de armazenamento de dados, ao usuário. Esteja ciente de que um provedor de contêineres Windows PowerShell só pode ser usado quando há um contêiner (sem contêineres aninhados) com itens dentro. Se houver contêineres aninhados, então você deve implementar um provedor de navegação Windows PowerShell .

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

Cmdlet Definition
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 PassThru parâmetro seja especificado.
Get-ChildItem Recupera os itens filhos 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 PassThru parâmetro seja especificado.

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

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

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

Selecione Interfaces de Provedores para Suporte

Além de derivar de uma das classes base do Windows PowerShell, seu provedor de PowerShell pode suportar outras funcionalidades derivando de uma ou mais das seguintes interfaces de provedor. Esta seção define essas interfaces e os cmdlets suportados por cada uma. Ele não descreve os parâmetros para os cmdlets suportados pela interface. Informações sobre parâmetros de cmdlet estão disponíveis online usando os Get-Command cmdlets e (e Get-Help cmdlets).

IContentCmdletProvider

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

Cmdlet Definition
Add-Content Anexa 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 PassThru parâmetro seja especificado.
Clear-Content Define o conteúdo do item especificado para o valor "limpo". Esse cmdlet não passa um objeto de saída pelo pipeline a menos que seu PassThru parâmetro seja especificado.
Get-Content Recupera o conteúdo dos itens especificados e transmite os objetos resultantes.
Set-Content Substitui o conteúdo existente pelos itens especificados. Esse cmdlet não passa um objeto de saída pelo pipeline a menos que seu PassThru parâmetro seja especificado.

IPropertyCmdletProvider

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

Observação

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

Cmdlet Definition
Clear-ItemProperty Define as propriedades dos itens especificados para o valor "limpo". Esse cmdlet não passa um objeto de saída pelo pipeline a menos que seu PassThru parâmetro 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 PassThru parâmetro 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 suportados. Esse tipo de provedor lida com operações para as quais propriedades podem ser definidas em tempo de execução, por exemplo, uma nova operação de propriedade. Tais operações não são possíveis em itens que possuem propriedades estaticamente definidas. A tabela a seguir lista os cmdlets expostos por essa interface.

Cmdlet Definition
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 PassThru parâmetro 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 PassThru parâmetro 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 PassThru parâmetro 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 descritores de segurança para um item no armazenamento de dados. A tabela a seguir lista os cmdlets expostos por essa interface.

Cmdlet Definition
Get-Acl Recupera as informações contidas em uma lista de controle de acesso (ACL), 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 para um ACL. Ela 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 do provedor, se o provedor do Windows PowerShell suportar a configuração de informações de segurança.

Consulte Também

Criando Provedores PowerShell para Windows

Como Funciona o PowerShell do Windows

Windows PowerShell SDK