Partilhar via


Criação de um Fornecedor Básico de PowerShell para Windows

Este tópico é o ponto de partida para aprender a criar um fornecedor PowerShell para Windows. O fornecedor básico aqui descrito fornece métodos para iniciar e parar o fornecedor e, embora este fornecedor não forneça um meio para aceder a um armazenamento de dados ou para obter ou definir os dados no armazenamento, fornece a funcionalidade básica exigida por todos os fornecedores.

Como mencionado anteriormente, o fornecedor básico aqui descrito implementa métodos para iniciar e parar o fornecedor. O runtime do Windows PowerShell chama estes métodos para inicializar e desinicializar o fornecedor.

Observação

Pode encontrar um exemplo deste fornecedor no ficheiro AccessDBSampleProvider01.cs fornecido pelo Windows PowerShell.

Definição da Classe de Fornecedor Windows PowerShell

O primeiro passo na criação de um fornecedor Windows PowerShell é definir a sua classe .NET. Este fornecedor básico define uma classe chamada AccessDBProvider que deriva da classe base System.Management.Automation.Provider.CmdletProvider .

Recomenda-se que coloque as suas classes de fornecedores num Providers namespace do seu espaço de API, por exemplo, xxx.PowerShell.Providers. Este fornecedor utiliza o Microsoft.Samples.PowerShell.Provider namespace, onde todos os exemplos do fornecedor Windows PowerShell são executados.

Observação

A classe para um fornecedor Windows PowerShell deve ser explicitamente marcada como pública. As classes não marcadas como públicas irão por defeito para internas e não serão encontradas pelo runtime do Windows PowerShell.

Aqui está a definição da classe para este fornecedor básico:

[CmdletProvider("AccessDB", ProviderCapabilities.None)]
public class AccessDBProvider : CmdletProvider

Logo antes da definição da classe, deve declarar o atributo System.Management.Automation.Provider.CmdletProviderAttribute , com a sintaxe [CmdletProvider()].

Podes definir palavras-chave de atributos para declarar ainda mais a classe, se necessário. Note que o atributo System.Management.Automation.Provider.CmdletProviderAttribute declarado aqui inclui dois parâmetros. O primeiro parâmetro de atributo especifica o nome amigável ao padrão para o fornecedor, que o utilizador pode modificar posteriormente. O segundo parâmetro especifica as capacidades definidas pelo Windows PowerShell que o fornecedor expõe ao tempo de execução do Windows PowerShell durante o processamento de comandos. Os valores possíveis para as capacidades do fornecedor são definidos pela enumeração System.Management.Automation.Provider.ProviderCapabilities . Como este é um fornecedor base, não suporta capacidades.

Observação

O nome totalmente qualificado do fornecedor Windows PowerShell inclui o nome assembly e outros atributos determinados pelo Windows PowerShell após o registo do fornecedor.

Definição 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 fornecedor apenas quando necessário. Portanto, se o seu fornecedor necessita de controlo total e manutenção do estado para dados específicos do fornecedor, deve derivar uma classe da classe System.Management.Automation.ProviderInfo . A sua classe derivada deve definir os membros necessários para manter o estado, de modo a que os dados específicos do fornecedor possam ser acedidos quando o runtime do Windows PowerShell chamar o método System.Management.Automation.Provider.CmdletProvider.Start* para inicializar o fornecedor.

Um fornecedor Windows PowerShell também pode manter o estado baseado em ligação. Para mais informações sobre como manter o estado da ligação, consulte Criação de um Fornecedor de Discos PowerShell.

Inicialização do Fornecedor

Para inicializar o fornecedor, o runtime do Windows PowerShell chama o método System.Management.Automation.Provider.CmdletProvider.Start* quando o Windows PowerShell é iniciado. Na maioria das vezes, o seu fornecedor pode usar a implementação padrão deste método, que simplesmente devolve o objeto System.Management.Automation.ProviderInfo que descreve o seu fornecedor. No entanto, no caso de querer adicionar informação adicional de inicialização, deve implementar o seu próprio método System.Management.Automation.Provider.CmdletProvider.Start* que devolve uma versão modificada do objeto System.Management.Automation.ProviderInfo que é passada ao seu fornecedor. Em geral, este método deve devolver o objeto System.Management.Automation.ProviderInfo fornecido que lhe é passado ou um objeto System.Management.Automation.ProviderInfo modificado que contenha outra informação de inicialização.

Este fornecedor básico não se sobrepõe a este método. No entanto, o código seguinte mostra a implementação padrão deste método:

O fornecedor pode manter o estado da informação específica do fornecedor, conforme descrito na Definição do Estado dos Dados Específicos do Fornecedor. Neste caso, a sua implementação deve sobrescrever o método System.Management.Automation.Provider.CmdletProvider.Start* para devolver 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. Neste caso, o fornecedor deve sobrepor o método System.Management.Automation.Provider.CmdletProvider.StartDynamicParameters* e devolver 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 .

Este fornecedor básico não se sobrepõe a este método. No entanto, o código seguinte mostra a implementação padrão deste método:

Desinicializar o Fornecedor

Para liberar os recursos que o fornecedor Windows PowerShell utiliza, o seu fornecedor deve implementar o seu próprio método System.Management.Automation.Provider.CmdletProvider.Stop* . Este método é chamado pelo runtime do Windows PowerShell para desinicializar o fornecedor no final de uma sessão.

Este fornecedor básico não se sobrepõe a este método. No entanto, o código seguinte mostra a implementação padrão deste método:

Exemplo de código

Para código de exemplo completo, consulte AccessDbProviderSample01 Code Sample.

Testar o Fornecedor Windows PowerShell

Depois de o seu fornecedor Windows PowerShell estar registado no Windows PowerShell, pode testá-lo executando os cmdlets suportados na linha de comandos. Para este fornecedor básico, execute o novo shell e use o Get-PSProvider cmdlet para recuperar a lista de fornecedores e garantir que o fornecedor AccessDb está presente.

Get-PSProvider

A seguinte saída é exibida:

Name                 Capabilities                  Drives
----                 ------------                  ------
AccessDb             None                          {}
Alias                ShouldProcess                 {Alias}
Environment          ShouldProcess                 {Env}
FileSystem           Filter, ShouldProcess         {C, Z}
Function             ShouldProcess                 {function}
Registry             ShouldProcess                 {HKLM, HKCU}

Ver também

Criação de Fornecedores Windows PowerShell

Desenhar o Seu Fornecedor Windows PowerShell