Creating a Windows PowerShell Property Provider (Criar um Fornecedor de Propriedades do Windows PowerShell)
Este tópico descreve como criar um fornecedor que permite ao utilizador manipular as propriedades dos itens numa loja de dados. Como consequência, este tipo de prestador é referido como um fornecedor de propriedade Windows PowerShell. Por exemplo, o fornecedor de registo fornecido pela Windows PowerShell trata os valores-chave do registo como propriedades do item chave de registo. Este tipo de fornecedor deve adicionar a interface System.Management.Automation.Provider.Ipropertycmdletprovider à implementação da classe .NET.
Nota
Windows PowerShell fornece um ficheiro de modelo que pode usar para desenvolver um fornecedor de Windows PowerShell. O ficheiro .cs ModeloProvider está disponível no Microsoft Windows Software Development Kit para Windows Vista e .NET Framework componentes de tempo de execução 3.0. Para obter instruções de descarregamento, consulte Como instalar Windows PowerShell e descarregue o Windows PowerShell SDK. O modelo descarregado está disponível no <PowerShell Samples> diretório. Deverá fazer uma cópia deste ficheiro e utilizar a cópia para criar um novo fornecedor de Windows PowerShell, removendo qualquer funcionalidade de que não necessite. Para obter mais informações sobre outras implementações Windows PowerShell do fornecedor, consulte Designing Your Windows PowerShell Provider.
Atenção
Os métodos do seu fornecedor de propriedade devem escrever quaisquer objetos utilizando o método System.Management.Automation.Provider.Cmdletprovider.Writepropertyobject* .
Definição do fornecedor de Windows PowerShell
Um fornecedor de imóveis deve criar uma classe .NET que suporte a interface System.Management.Automation.Provider.Ipropertycmdletprovider. Aqui está a declaração de classe predefinido do ficheiro ModeloProvider.cs fornecido por Windows PowerShell.
Definição da funcionalidade base
A interface System.Management.Automation.Provider.Ipropertycmdletprovider pode ser anexada a qualquer uma das classes base do fornecedor, com exceção da classe System.Management.Automation.Provider.Drivecmdletprovider. Adicione a funcionalidade base que é exigida pela classe base que está a usar. Para obter mais informações sobre as classes base, consulte Designing Your Windows PowerShell Provider.
Recuperação de propriedades
Para recuperar propriedades, o fornecedor deve implementar o método System.Management.Automation.Provider.Ipropertycmdletprovider.Getproperty* para suportar chamadas a partir do Get-ItemProperty
cmdlet. Este método recupera as propriedades do item localizado no caminho interno do fornecedor especificado (totalmente qualificado).
O providerSpecificPickList
parâmetro indica quais as propriedades a recuperar. Se este parâmetro estiver null
ou estiver vazio, o método deve recuperar todas as propriedades. Além disso, System.Management.Automation.Provider.Ipropertycmdletprovider.Getproperty* escreve uma instância de um System.Management.Automation.PSObject objeto que representa um saco de propriedade das propriedades recuperadas. O método não deve devolver nada.
Recomenda-se que a implementação do System.Management.Automation.Provider.Ipropertycmdletprovider.Getproperty* suporte a expansão wildcard de nomes de propriedade para cada elemento na lista de escolhas. Para isso, utilize a classe System.Management.Automation.Wildcardpattern para executar o padrão wildcard correspondente.
Aqui está a implementação padrão do ficheiro System.Management.Automation.Provider.Ipropertycmdletprovider.Getproperty* do ficheiro ModeloProvider.cs fornecido por Windows PowerShell.
Coisas a lembrar sobre implementar GetProperty
As seguintes condições podem aplicar-se à sua implementação de System.Management.Automation.Provider.Ipropertycmdletprovider.Getproperty*
Ao definir a classe de fornecedor, um fornecedor de propriedade Windows PowerShell pode declarar capacidades de fornecedor de ExpandWildcards, Filter, Include ou Exclude, da enumeração System.Management.Automation.Provider.Providercapabilities. Nestes casos, a implementação do método System.Management.Automation.Provider.Ipropertycmdletprovider.Getproperty* tem de garantir que o caminho passado para o método satisfaz os requisitos das capacidades especificadas. Para tal, o método deve aceder à propriedade adequada, por exemplo, às propriedades System.Management.Automation.Automation.Provider.Cmdletprovider.Exclude* e System.Management.Automation.Provider.Cmdletprovider.Include* propriedades.
Por predefinição, as substituições deste método não devem recuperar um leitor para objetos que estejam escondidos do utilizador a menos que a propriedade System.Management.Automation.Provider.Cmdletprovider.Force* esteja definida para
true
. Deve ser escrito um erro se o caminho representar um item que está escondido do utilizador e do Sistema.Management.Automation.Provider.Cmdletprovider.Force* está definido parafalse
.
Anexação de parâmetros dinâmicos ao Get-ItemProperty Cmdlet
O Get-ItemProperty
cmdlet pode requerer parâmetros adicionais que são especificados dinamicamente no tempo de execução. Para fornecer estes parâmetros dinâmicos, o fornecedor de propriedade Windows PowerShell deve implementar o método System.Management.Automation.Provider.Ipropertycmdletprovider.Getpropertydynamicparameters*. O path
parâmetro indica um caminho interno do fornecedor totalmente qualificado, enquanto o parâmetro especifica as propriedades providerSpecificPickList
específicas do fornecedor inseridas na linha de comando. Este parâmetro pode estar null
ou vazio se as propriedades forem canalizadas para o cmdlet. Neste caso, este método devolve um objeto que tem propriedades e campos com atributos de análise semelhantes a uma classe cmdlet ou a um System.Management.Automation.Runtimedefinedparametdictionary object. O tempo de execução Windows PowerShell utiliza o objeto devolvido para adicionar os parâmetros ao cmdlet.
Aqui está a implementação padrão do ficheiro System.Management.Automation.Provider.Ipropertycmdletprovider.Getpropertydynamicparameters* do ficheiro ModeloProvider.cs fornecido por Windows PowerShell.
Definição de propriedades
Para definir propriedades, o fornecedor de propriedade Windows PowerShell deve implementar o método System.Management.Automation.Provider.Ipropertycmdletprovider.Setproperty* para suportar chamadas a partir do Set-ItemProperty
cmdlet. Este método define uma ou mais propriedades do item no caminho especificado e substitui as propriedades fornecidas conforme necessário.
System.Management.Automation.Provider.Ipropertycmdletprovider.Setproperty* também escreve um exemplo de um system.Management.Automation.PSObject objeto que representa um saco de propriedade das propriedades atualizadas.
Aqui está a implementação padrão do ficheiro System.Management.Automation.Provider.Ipropertycmdletprovider.Setproperty* do ficheiro ModeloProvider.cs fornecido por Windows PowerShell.
Coisas a lembrar sobre implementar Set-ItemProperty
As seguintes condições podem aplicar-se a uma implementação do System.Management.Automation.Provider.Ipropertycmdletprovider.Setproperty*
Ao definir a classe de fornecedor, um fornecedor de propriedade Windows PowerShell pode declarar capacidades de fornecedor de ExpandWildcards, Filter, Include ou Exclude, da enumeração System.Management.Automation.Provider.Providercapabilities. Nestes casos, a implementação do método System.Management.Automation.Provider.Ipropertycmdletprovider.Setproperty* deve garantir que o caminho percorrido ao método satisfaz os requisitos das capacidades especificadas. Para tal, o método deve aceder à propriedade adequada, por exemplo, às propriedades System.Management.Automation.Automation.Provider.Cmdletprovider.Exclude* e System.Management.Automation.Provider.Cmdletprovider.Include* propriedades.
Por predefinição, as substituições deste método não devem recuperar um leitor para objetos que estejam escondidos do utilizador a menos que a propriedade System.Management.Automation.Provider.Cmdletprovider.Force* esteja definida para
true
. Deve ser escrito um erro se o caminho representar um item que está escondido do utilizador e do Sistema.Management.Automation.Provider.Cmdletprovider.Force* está definido parafalse
.A sua implementação do método System.Management.Automation.Provider.Ipropertycmdletprovider.Setproperty* deve ligar para System.Management.Automation.Provider.Cmdletprovider.ShouldProcesso e verificar o seu valor de devolução antes de enteada para a loja de dados. Este método é utilizado para confirmar a execução de uma operação quando é feita uma alteração ao estado do sistema, por exemplo, renomeando ficheiros. System.Management.Automation.Provider.Cmdletprovider.ShouldProcesso envia o nome do recurso a ser alterado para o utilizador, com o tempo de execução Windows PowerShell e manusear quaisquer definições de linha de comando ou variáveis de preferência na determinação do que deve ser exibido.
Após a chamada para System.Management.Automation.Provider.Cmdletprovider.ShouldProcessar
true
devoluções, se forem possível escriminar modificações do sistema potencialmente perigosas, o método System.Management.Automation.Provider.Ipropertycmdletprovider.Setproperty* deve chamar o método System.Management.Automation.Provider.Cmdletprovider.ShouldContinue. Este método envia uma mensagem de confirmação ao utilizador para permitir feedback adicional que indique que a operação deve ser continuada.
Fixação de parâmetros dinâmicos para o Set-ItemProperty Cmdlet
O Set-ItemProperty
cmdlet pode requerer parâmetros adicionais que são especificados dinamicamente no tempo de execução. Para fornecer estes parâmetros dinâmicos, o fornecedor de propriedade Windows PowerShell deve implementar o método System.Management.Automation.Provider.Ipropertycmdletprovider.Setpropertydynamicparameters*. Este método devolve um objeto que tem propriedades e campos com atributos de análise semelhantes a uma classe cmdlet ou a um system.Management.Automation.Runtimedefinedparameterdicary object. O null
valor pode ser devolvido se não forem adicionados parâmetros dinâmicos.
Aqui está a implementação padrão do ficheiro System.Management.Automation.Provider.Ipropertycmdletprovider.Getpropertydynamicparameters* do ficheiro ModeloProvider.cs fornecido por Windows PowerShell.
Propriedades de Compensação
Para limpar propriedades, o fornecedor de propriedade Windows PowerShell deve implementar o método System.Management.Automation.Provider.Ipropertycmdletprovider.Clearproperty* para suportar chamadas a partir do Clear-ItemProperty
cmdlet. Este método define uma ou mais propriedades para o item localizado no caminho especificado.
Aqui está a implementação padrão do ficheiro System.Management.Automation.Provider.Ipropertycmdletprovider.Clearproperty* do ficheiro ModeloProvider.cs fornecido por Windows PowerShell.
Coisa a lembrar sobre implementar ClearProperty
As seguintes condições podem aplicar-se à sua implementação do System.Management.Automation.Provider.Ipropertycmdletprovider.Clearproperty*
Ao definir a classe de fornecedor, um fornecedor de propriedade Windows PowerShell pode declarar capacidades de fornecedor de ExpandWildcards, Filter, Include ou Exclude, da enumeração System.Management.Automation.Provider.Providercapabilities. Nestes casos, a implementação do método System.Management.Automation.Provider.Ipropertycmdletprovider.Clearproperty* tem de garantir que o caminho percorrido ao método satisfaz os requisitos das capacidades especificadas. Para tal, o método deve aceder à propriedade adequada, por exemplo, às propriedades System.Management.Automation.Automation.Provider.Cmdletprovider.Exclude* e System.Management.Automation.Provider.Cmdletprovider.Include* propriedades.
Por predefinição, as substituições deste método não devem recuperar um leitor para objetos que estejam escondidos do utilizador a menos que a propriedade System.Management.Automation.Provider.Cmdletprovider.Force* esteja definida para
true
. Deve ser escrito um erro se o caminho representar um item que está escondido do utilizador e do Sistema.Management.Automation.Provider.Cmdletprovider.Force* está definido parafalse
.A sua implementação do método System.Management.Automation.Provider.Ipropertycmdletprovider.Clearproperty*deve ligar para System.Management.Automation.Provider.Cmdletprovider.ShouldProcess e verificar o seu valor de devolução antes de eserir quaisquer alterações na loja de dados. Este método é utilizado para confirmar a execução de uma operação antes de ser feita uma alteração ao estado do sistema, como a limpeza de conteúdos. System.Management.Automation.Provider.Cmdletprovider.ShouldProcesso envia o nome do recurso a ser alterado para o utilizador, com o tempo de execução Windows PowerShell tendo em conta quaisquer definições de linha de comando ou variáveis preferenciais na determinação do que deve ser exibido.
Após a chamada para System.Management.Automation.Provider.Cmdletprovider.ShouldProcess returns
true
, se puderem ser feitas modificações potencialmente perigosas do sistema, o método System.Management.Automation.Provider.Ipropertycmdletprovider.Clearproperty* deve chamar o método System.Management.Automation.Automation.Provider.Cmdletprovider.ShouldContinue. Este método envia uma mensagem de confirmação ao utilizador para permitir feedback adicional que indique que a operação potencialmente perigosa deve ser continuada.
Anexação de parâmetros dinâmicos ao Clear-ItemProperty Cmdlet
O Clear-ItemProperty
cmdlet pode requerer parâmetros adicionais que são especificados dinamicamente no tempo de execução. Para fornecer estes parâmetros dinâmicos, o fornecedor de propriedade Windows PowerShell deve implementar o método System.Management.Automation.Provider.Ipropertycmdletprovider.Clearpropertydynamicparameters*. Este método devolve um objeto que tem propriedades e campos com atributos de análise semelhantes a uma classe cmdlet ou a um system.Management.Automation.Runtimedefinedparameterdicary object. O null
valor pode ser devolvido se não forem adicionados parâmetros dinâmicos.
Aqui está a implementação padrão do Sistema.Management.Automation.Provider.Ipropertycmdletprovider.Clearpropertydynamicparameters* do ficheiro ModeloProvider.cs fornecido por Windows PowerShell.
Construção do provedor de Windows PowerShell
Ver Como Registar Cmdlets, Fornecedores e Aplicações de Anfitrião.
Consulte também
Desenhe o seu fornecedor de Windows PowerShell
Ampliação de tipos de objetos e formatação
Como registar cmdlets, fornecedores e aplicações de anfitrião
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários