Compartilhar via


Projetar seu provedor do Windows PowerShell

você deve implementar um provedor de Windows PowerShell se seu produto ou configuração expõe um conjunto de dados armazenados, como um banco de dado que o usuário deseja navegar ou procurar. além disso, se o seu produto fornecer um contêiner, mesmo que não seja um contêiner de vários níveis, faz sentido implementar um provedor de Windows PowerShell. por exemplo, talvez você queira implementar um provedor de contêiner Windows PowerShell se a cópia do verbo do cmdlet, mover, renomear, novo ou remover fizer sentido como uma operação em seu produto ou dados de configuração.

Windows PowerShell Caminhos identificam seu provedor

o tempo de execução de Windows PowerShell usa caminhos de Windows PowerShell para acessar o provedor de Windows PowerShell apropriado. Quando um cmdlet especifica um desses caminhos, o tempo de execução sabe qual provedor usar para acessar o armazenamento de dados associado. Esses caminhos incluem caminhos qualificados da unidade, caminhos qualificados do provedor, caminhos diretos do provedor e caminhos internos do provedor. cada provedor de Windows PowerShell deve dar suporte a um ou mais desses caminhos.

para obter mais informações sobre caminhos de Windows PowerShell, consulte como o Windows PowerShell funciona.

Definindo um caminho de Drive-Qualified

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

Definindo um caminho de Provider-Qualified

para permitir que o tempo de execução de Windows PowerShell inicializar e cancelar a inicialização do provedor, seu provedor de Windows PowerShell deve dar suporte a um caminho qualificado para provedor. Por exemplo, FileSystem:: \ \uncshare\abc\bar é o caminho qualificado do provedor para o provedor FileSystem fornecido pelo Windows PowerShell.

Definindo um caminho de Provider-Direct

para permitir o acesso remoto ao seu provedor de Windows PowerShell, ele deve dar suporte a um caminho direto do provedor para passar diretamente para o provedor de Windows PowerShell para o local atual. por exemplo, o provedor de 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 interfaces de programação de aplicativo (APIs) não Windows PowerShell, seu provedor de Windows PowerShell deve dar suporte a um caminho interno de provedor. Esse caminho é indicado após "::" no caminho qualificado do provedor. por exemplo, o caminho interno do provedor para o filesystem Windows PowerShell provider é \ \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 atualizada do item alterado 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 a recuperação do item mais atualizado 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.

Escolha uma classe base para seu provedor

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

cada classe base do provedor de Windows PowerShell torna disponível um conjunto de cmdlets. Esta seção descreve os cmdlets, mas não descreve seus parâmetros.

usando o estado de sessão, o tempo de execução de Windows PowerShell disponibiliza vários cmdlets de local para determinados provedores de Windows PowerShell, como os Get-Location Set-Location cmdlets,, Pop-Location e Push-Location . Você pode usar o Get-Help cmdlet para obter informações sobre esses cmdlets de local.

Classe base cmdletprovider

a classe System. Management. Automation. Provider. cmdletprovider define um provedor de Windows PowerShell básico. 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 de 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

os provedores de Windows PowerShell estão disponíveis para todos os Windows PowerShell escopos de idioma.

Classe base DriveCmdletProvider

a classe System. Management. Automation. Provider. Drivecmdletprovider define um provedor de unidade 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 que são montados, como discos rígidos e unidades de dispositivo de 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 daqueles listados, o Get-PSDrive cmdlet (exposto por estado de sessão) é um cmdlet relacionado que é usado para recuperar as unidades disponíveis.

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

Classe base de defaultcmdletprovider

a classe System. Management. Automation. Provider. docmdletprovider define um provedor de item de Windows PowerShell que executa operações em itens individuais do armazenamento de dados e não assume nenhum recurso de navegação ou contêiner. 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 por meio do 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 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 por meio do pipeline, a menos que seu PassThru parâmetro seja especificado.
Resolve-Path resolve os curingas para um caminho de Windows PowerShell e informações de caminho de fluxos.
Test-Path Testa o caminho especificado e retorna true se ele existe e, false caso contrário,. Esse cmdlet é implementado para dar suporte ao IsContainer parâmetro 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 Windows PowerShell que expõe um contêiner, para itens de armazenamento de dados, ao usuário. lembre-se de que um provedor de contêiner Windows PowerShell pode ser usado somente quando há um contêiner (sem contêineres aninhados) com itens. se houver contêineres aninhados, você deverá implementar um provedor de navegação Windows PowerShell.

Essa classe deriva da classe base System. Management. Automation. Provider. @ cmdletprovider . 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 por meio do pipeline, a menos que seu PassThru parâmetro 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 por meio do 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 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 de 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 por meio do pipeline, a menos que seu PassThru parâmetro seja especificado.

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

Selecionar interfaces de provedor para dar suporte

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

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 por meio do pipeline, a menos que seu PassThru parâmetro seja especificado.
Clear-Content Define o conteúdo do item especificado para o valor "Clear". Esse cmdlet não passa um objeto de saída por meio do 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 para os itens especificados. Esse cmdlet não passa um objeto de saída por meio do pipeline, a menos que seu PassThru parâmetro seja especificado.

IPropertyCmdletProvider

A interface System. Management. Automation. Provider. Ipropertycmdletprovider define uma propriedade do provedor do Windows PowerShell que executa operações nas propriedades de 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 Definição
Clear-ItemProperty Define as propriedades dos itens especificados para o valor "Clear". Esse cmdlet não passa um objeto de saída por meio do pipeline, a menos que seu PassThru parâmetro seja especificado.
Get-ItemProperty Recupera as 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 por meio do 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 com suporte. Esse tipo de provedor trata as 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 por meio do 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 por meio do 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 por meio do pipeline, a menos que seu PassThru parâmetro seja especificado.

ISecurityDescriptorCmdletProvider

A interface System. Management. Automation. Provider. Isecuritydescriptorcmdletprovider adiciona a 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 repositório 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 os 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 oferecer suporte à configuração de informações de segurança.

Consulte Também

Criando provedores do Windows PowerShell

Como funciona o Windows PowerShell

SDK do Windows PowerShell