Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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}