Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este tópico é o ponto de partida para aprender a criar um provedor Windows PowerShell. O provedor básico descrito aqui fornece métodos para iniciar e encerrar o provedor e, embora esse provedor não forneça um meio de acessar um armazenamento de dados ou obter ou definir os dados nele, ele fornece a funcionalidade básica exigida por todos os provedores.
Como mencionado anteriormente, o provedor básico descrito aqui implementa métodos para iniciar e parar o provedor. O runtime do Windows PowerShell chama esses métodos para inicializar e desinicializar o provedor.
Observação
Você pode encontrar uma amostra desse provedor no arquivo AccessDBSampleProvider01.cs fornecido pelo Windows PowerShell.
Definindo a Classe de Provedor PowerShell do Windows
O primeiro passo para criar um provedor Windows PowerShell é definir sua classe .NET. Esse fornecedor básico define uma classe chamada AccessDBProvider que deriva da classe base System.Management.Automation.Provider.CmdletProvider .
Recomenda-se que você coloque suas classes de provedor em um Providers namespace do seu espaço de API, por exemplo, xxx.PowerShell.Providers. Esse provedor utiliza o Microsoft.Samples.PowerShell.Provider namespace, onde todos os exemplos de provedores Windows PowerShell rodam.
Observação
A classe para um provedor Windows PowerShell deve ser explicitamente marcada como pública. Classes não marcadas como públicas irão usar o padrão interno e não serão encontradas pelo runtime do Windows PowerShell.
Aqui está a definição da classe para esse provedor básico:
[CmdletProvider("AccessDB", ProviderCapabilities.None)]
public class AccessDBProvider : CmdletProvider
Logo antes da definição da classe, você deve declarar o atributo System.Management.Automation.Provider.CmdletProviderAttribute , com a sintaxe [CmdletProvider()].
Você pode definir palavras-chave de atributos para declarar ainda mais a classe, se necessário. Note que o atributo System.Management.Automation.Provider.CmdletProviderAttributes declarado aqui inclui dois parâmetros. O primeiro parâmetro de atributo especifica o nome amigável ao padrão para o provedor, que o usuário pode modificar posteriormente. O segundo parâmetro especifica as capacidades definidas pelo Windows PowerShell que o provedor expõe ao tempo de execução do Windows PowerShell durante o processamento de comandos. Os valores possíveis para as capacidades do provedor são definidos pela enumeração System.Management.Automation.Provider.ProviderCapabilities . Como este é um provedor base, ele não suporta nenhuma capacidade.
Observação
O nome totalmente qualificado do provedor Windows PowerShell inclui o nome assembly e outros atributos determinados pelo Windows PowerShell ao registrar o provedor.
Definindo Provider-Specific Informação de Estado
A classe base System.Management.Automation.Provider.CmdletProvider e todas as classes derivadas são consideradas sem estado porque o runtime do Windows PowerShell cria instâncias de provedor apenas conforme necessário. Portanto, se seu provedor exige controle total e manutenção do estado para dados específicos do provedor, ele deve derivar uma classe da classe System.Management.Automation.ProviderInfo . Sua classe derivada deve definir os membros necessários para manter o estado, de modo que os dados específicos do provedor possam ser acessados quando o runtime do Windows PowerShell chamar o método System.Management.Automation.Provider.CmdletProvider.Start* para inicializar o provedor.
Um provedor de PowerShell com Windows também pode manter o estado baseado em conexão. Para mais informações sobre como manter o estado da conexão, veja Criação de um Provedor de Unidade PowerShell.
Inicializando o Provedor
Para inicializar o provedor, o tempo de execução do Windows PowerShell chama o método System.Management.Automation.Provider.CmdletProvider.Start* quando o Windows PowerShell é iniciado. Na maior parte das vezes, seu provedor pode usar a implementação padrão desse método, que simplesmente retorna o objeto System.Management.Automation.ProviderInfo que descreve seu provedor. No entanto, no caso de você quiser adicionar informações adicionais de inicialização, deve implementar seu próprio método System.Management.Automation.Provider.CmdletProvider.Start* que retorne uma versão modificada do objeto System.Management.Automation.ProviderInfo que é passada ao seu provedor. Em geral, esse método deve retornar o objeto System.Management.Automation.ProviderInfo fornecido passado para ele ou um objeto System.Management.Automation.ProviderInfo modificado que contenha outras informações de inicialização.
Esse provedor básico não anula esse método. No entanto, o código a seguir mostra a implementação padrão desse método:
O provedor pode manter o estado das informações específicas do provedor, conforme descrito em Definindo o Estado dos Dados Específicos do Provedor. Nesse caso, sua implementação deve sobrescrever o método System.Management.Automation.Provider.CmdletProvider.Start* para retornar uma instância da classe derivada.
Parâmetros Dinâmicos de Início
A implementação do seu fornecedor do método System.Management.Automation.Provider.CmdletProvider.Start* pode exigir parâmetros adicionais. Nesse caso, o provedor deve sobrescrever o método System.Management.Automation.Provider.CmdletProvider.StartDynamicParameters* e retornar um objeto que tenha propriedades e campos com atributos de análise semelhantes a uma classe cmdlet ou a um objeto System.Management.Automation.RuntimeDefinedParameterDictionary .
Esse provedor básico não anula esse método. No entanto, o código a seguir mostra a implementação padrão desse método:
Desinicializando o Provedor
Para liberar recursos que o provedor Windows PowerShell utiliza, seu provedor deve implementar seu próprio método System.Management.Automation.Provider.CmdletProvider.Stop* . Esse método é chamado pelo runtime do Windows PowerShell para desinicializar o provedor ao final de uma sessão.
Esse provedor básico não anula esse método. No entanto, o código a seguir mostra a implementação padrão desse método:
Exemplo de código
Para um código de exemplo completo, veja AccessDbProviderSample01 Code Sample.
Testando o Provedor Windows PowerShell
Depois que seu provedor de Windows PowerShell estiver registrado no Windows PowerShell, você pode testá-lo executando os cmdlets suportados na linha de comando. Para esse provedor básico, execute o novo shell e use o Get-PSProvider cmdlet para recuperar a lista de provedores e garantir que o provedor AccessDb esteja presente.
Get-PSProvider
O seguinte resultado é exibido:
Name Capabilities Drives
---- ------------ ------
AccessDb None {}
Alias ShouldProcess {Alias}
Environment ShouldProcess {Env}
FileSystem Filter, ShouldProcess {C, Z}
Function ShouldProcess {function}
Registry ShouldProcess {HKLM, HKCU}