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 descreve como criar um fornecedor Windows PowerShell que possa manipular os dados num armazenamento de dados. Neste tópico, os elementos de dados na loja são referidos como os "elementos" da loja de dados. Como consequência, um fornecedor que pode manipular os dados na loja é referido como fornecedor de itens Windows PowerShell.
Observação
Pode descarregar o ficheiro fonte C# (AccessDBSampleProvider03.cs) deste fornecedor usando o Microsoft Windows Software Development Kit para Windows Vista e os Componentes de Runtime do .NET Framework 3.0. Para instruções de download, consulte Como Instalar o Windows PowerShell e Descarregar o Windows PowerShell SDK.
Os ficheiros fonte descarregados estão disponíveis no PowerShell Samples diretório. Para mais informações sobre outras implementações de fornecedores Windows PowerShell, consulte Designing Your Windows PowerShell Provider.
O fornecedor de itens do Windows PowerShell descrito neste tópico obtém itens de dados de uma base de dados Access. Neste caso, um "item" é ou uma tabela na base de dados Access ou uma linha numa tabela.
Definição da classe de fornecedor de itens do Windows PowerShell
Um fornecedor de itens do Windows PowerShell deve definir uma classe .NET que deriva da classe base System.Management.Automation.Provider.ItemCmdletProvider . Segue-se a definição de classe para o fornecedor de itens descrito nesta secção.
[CmdletProvider("AccessDB", ProviderCapabilities.None)]
public class AccessDBProvider : ItemCmdletProvider
Note que, nesta definição de classe, o atributo System.Management.Automation.Provider.CmdletProviderAttribute inclui dois parâmetros. O primeiro parâmetro especifica um nome amigável para o fornecedor utilizado pelo Windows PowerShell. O segundo parâmetro especifica as capacidades específicas do Windows PowerShell que o fornecedor expõe ao tempo de execução do Windows PowerShell durante o processamento de comandos. Para este fornecedor, não existem capacidades específicas do Windows PowerShell adicionais.
Definição da funcionalidade base
Conforme descrito em Design Your Windows PowerShell Provider, a classe System.Management.Automation.Provider.DriveCmdletProvider deriva de várias outras classes que forneciam funcionalidades diferentes de fornecedores. Um fornecedor de itens do Windows PowerShell, portanto, deve definir toda a funcionalidade fornecida por essas classes.
Para mais informações sobre como implementar funcionalidades para adicionar informação de inicialização específica da sessão e para libertar recursos usados pelo fornecedor, consulte Criação de um Fornecedor Básico de PowerShell para Windows. No entanto, a maioria dos fornecedores, incluindo o fornecido aqui descrito, pode usar a implementação padrão desta funcionalidade fornecida pelo Windows PowerShell.
Antes de o fornecedor de itens do Windows PowerShell poder manipular os itens na loja, deve implementar os métodos da classe base System.Management.Automation.Provider.DriveCmdletProvider para aceder à loja de dados. Para mais informações sobre a implementação desta classe, consulte Criar um Fornecedor de Unidades PowerShell para Windows.
Verificação da validade do caminho
Ao procurar um dado, o runtime do Windows PowerShell fornece um caminho Windows PowerShell para o fornecedor, conforme definido na secção "Conceitos PSPath" de Como Funciona o Windows PowerShell. Um fornecedor de itens do Windows PowerShell deve verificar a validade sintática e semântica de qualquer caminho que lhe seja passado, implementando o método System.Management.Automation.Provider.ItemCmdletProvider.IsValidPath . Este método retorna true se o caminho for válido, e false caso contrário. Tenha em atenção que a implementação deste método não deve verificar a existência do item no caminho, mas apenas que o caminho é sintaticamente e semanticamente correto.
Aqui está a implementação do método System.Management.Automation.Provider.ItemCmdletProvider.IsValidPath para este fornecedor. Note que esta implementação chama um método auxiliar NormalizePath para converter todos os separadores do caminho para um uniforme.
protected override bool IsValidPath(string path)
{
bool result = true;
// check if the path is null or empty
if (String.IsNullOrEmpty(path))
{
result = false;
}
// convert all separators in the path to a uniform one
path = NormalizePath(path);
// split the path into individual chunks
string[] pathChunks = path.Split(pathSeparator.ToCharArray());
foreach (string pathChunk in pathChunks)
{
if (pathChunk.Length == 0)
{
result = false;
}
}
return result;
} // IsValidPath
Determinar se um item existe
Após verificar o caminho, o runtime do Windows PowerShell deve determinar se existe um dado nesse caminho. Para suportar este tipo de consulta, o fornecedor de itens do Windows PowerShell implementa o método System.Management.Automation.Provider.ItemCmdletProvider.ItemExists . Este método devolve true um item encontrado no caminho especificado e false (por defeito) caso contrário.
Aqui está a implementação do método System.Management.Automation.Provider.ItemCmdletProvider.ItemExists para este fornecedor. Note que este método chama os métodos auxiliares PathIsDrive, ChunkPath e GetTable , e utiliza um objeto DatabaseTableInfo definido pelo fornecedor.
protected override bool ItemExists(string path)
{
// check if the path represented is a drive
if (PathIsDrive(path))
{
return true;
}
// Obtain type, table name and row number from path
string tableName;
int rowNumber;
PathType type = GetNamesFromPath(path, out tableName, out rowNumber);
DatabaseTableInfo table = GetTable(tableName);
if (type == PathType.Table)
{
// if specified path represents a table then DatabaseTableInfo
// object for the same should exist
if (table != null)
{
return true;
}
}
else if (type == PathType.Row)
{
// if specified path represents a row then DatabaseTableInfo should
// exist for the table and then specified row number must be within
// the maximum row count in the table
if (table != null && rowNumber < table.RowCount)
{
return true;
}
}
return false;
} // ItemExists
Coisas a lembrar sobre a implementação do ItemExists
As seguintes condições podem aplicar-se à sua implementação de System.Management.Automation.Provider.ItemCmdletProvider.ItemExists:
- Ao definir a classe de fornecedor, um fornecedor de itens Windows PowerShell pode declarar capacidades de fornecedor de
ExpandWildcards,Filter,Include, ouExclude, a partir da enumeração System.Management.Automation.Provider.ProviderCapabilities . Nestes casos, a implementação do método System.Management.Automation.Provider.ItemCmdletProvider.ItemExists deve garantir que o caminho passado para o método cumpre os requisitos das capacidades especificadas. Para isso, o método deve aceder à propriedade apropriada, por exemplo, o System.Management.Automation.Provider.CmdletProvider.Exclude e System.Management.Automation.Provider.CmdletProvider.Include properties. - A implementação deste método deve gerir qualquer forma de acesso ao item que possa torná-lo visível para o utilizador. Por exemplo, se um utilizador tiver acesso de escrita a um ficheiro através do fornecedor do Sistema de Ficheiros (fornecido pelo Windows PowerShell), mas não acesso de leitura, o ficheiro ainda existe e System.Management.Automation.Provider.ItemCmdletProvider.ItemExists devolve
true. A sua implementação pode exigir verificar um item pai para ver se o item filho pode ser enumerado.
Anexação de parâmetros dinâmicos ao cmdlet de Test-Path
Por vezes, o Test-Path cmdlet que chama System.Management.Automation.Provider.ItemCmdletProvider.ItemExists requer parâmetros adicionais que são especificados dinamicamente em tempo de execução. Para fornecer estes parâmetros dinâmicos, o fornecedor de itens do Windows PowerShell deve implementar o método System.Management.Automation.Provider.ItemCmdletProvider.ItemExistsDynamicParameters . Este método recupera os parâmetros dinâmicos do item no caminho indicado e devolve um objeto que possui propriedades e campos com atributos de análise semelhantes a uma classe cmdlet ou a um objeto System.Management.Automation.RuntimeDefinedParameterDictionary . O runtime do Windows PowerShell usa o objeto devolvido para adicionar os parâmetros ao Test-Path cmdlet.
Este fornecedor de itens do Windows PowerShell não implementa este método. No entanto, o código seguinte é a implementação padrão deste método.
Recuperar um item
Para recuperar um item, o fornecedor de itens do Windows PowerShell deve sobrescrever o método System.Management.Automation.Provider.ItemCmdletProvider.GetItem para suportar chamadas do Get-Item cmdlet. Este método escreve o item usando o método System.Management.Automation.Provider.CmdletProvider.WriteItemObject .
Aqui está a implementação do método System.Management.Automation.Provider.ItemCmdletProvider.GetItem para este fornecedor. Note que este método utiliza os métodos GetTable e GetRow helper para recuperar itens que são tabelas na base de dados Access ou linhas numa tabela de dados.
protected override void GetItem(string path)
{
// check if the path represented is a drive
if (PathIsDrive(path))
{
WriteItemObject(this.PSDriveInfo, path, true);
return;
}// if (PathIsDrive...
// Get table name and row information from the path and do
// necessary actions
string tableName;
int rowNumber;
PathType type = GetNamesFromPath(path, out tableName, out rowNumber);
if (type == PathType.Table)
{
DatabaseTableInfo table = GetTable(tableName);
WriteItemObject(table, path, true);
}
else if (type == PathType.Row)
{
DatabaseRowInfo row = GetRow(tableName, rowNumber);
WriteItemObject(row, path, false);
}
else
{
ThrowTerminatingInvalidPathException(path);
}
} // GetItem
Coisas a lembrar sobre a implementação do GetItem
As seguintes condições podem aplicar-se a uma implementação de System.Management.Automation.Provider.ItemCmdletProvider.GetItem:
Ao definir a classe de fornecedor, um fornecedor de itens Windows PowerShell pode declarar capacidades de fornecedor de
ExpandWildcards,Filter,Include, ouExclude, a partir da enumeração System.Management.Automation.Provider.ProviderCapabilities . Nestes casos, a implementação do System.Management.Automation.Provider.ItemCmdletProvider.GetItem deve garantir que o caminho passado para o método cumpre esses requisitos. Para isso, o método deve aceder à propriedade apropriada, por exemplo, o System.Management.Automation.Provider.CmdletProvider.Exclude e System.Management.Automation.Provider.CmdletProvider.Include properties.Por defeito, as sobrescrituras deste método não devem recuperar objetos que geralmente estão ocultos ao utilizador, a menos que a propriedade System.Management.Automation.Provider.CmdletProvider.Force esteja definida como
true. Por exemplo, o método System.Management.Automation.Provider.ItemCmdletProvider.GetItem para o fornecedor do Sistema de Ficheiros verifica a propriedade System.Management.Automation.Provider.CmdletProvider.Force antes de tentar chamar System.Management.Automation.Provider.CmdletProvider.WriteItemObject para ficheiros ocultos ou do sistema.
Anexação de parâmetros dinâmicos ao cmdlet de Get-Item
Por vezes, o Get-Item cmdlet requer parâmetros adicionais que são especificados dinamicamente em tempo de execução. Para fornecer estes parâmetros dinâmicos, o fornecedor de itens do Windows PowerShell deve implementar o método System.Management.Automation.Provider.ItemCmdletProvider.GetItemDynamicParameters . Este método recupera os parâmetros dinâmicos do item no caminho indicado e devolve um objeto que possui propriedades e campos com atributos de análise semelhantes a uma classe cmdlet ou a um objeto System.Management.Automation.RuntimeDefinedParameterDictionary . O runtime do Windows PowerShell usa o objeto devolvido para adicionar os parâmetros ao Get-Item cmdlet.
Este fornecedor não implementa este método. No entanto, o código seguinte é a implementação padrão deste método.
Colocar um item
Para definir um item, o fornecedor de itens do Windows PowerShell tem de sobrescrever o método System.Management.Automation.Provider.ItemCmdletProvider.SetItem para suportar chamadas do Set-Item cmdlet. Este método define o valor do item no caminho especificado.
Este fornecedor não fornece uma substituição para o método System.Management.Automation.Provider.ItemCmdletProvider.SetItem . No entanto, segue-se a implementação padrão deste método.
Coisas a lembrar sobre a implementação do SetItem
As seguintes condições podem aplicar-se à sua implementação de System.Management.Automation.Provider.ItemCmdletProvider.SetItem:
Ao definir a classe de fornecedor, um fornecedor de itens Windows PowerShell pode declarar capacidades de fornecedor de
ExpandWildcards,Filter,Include, ouExclude, a partir da enumeração System.Management.Automation.Provider.ProviderCapabilities . Nestes casos, a implementação do System.Management.Automation.Provider.ItemCmdletProvider.SetItem deve garantir que o caminho passado para o método cumpre esses requisitos. Para isso, o método deve aceder à propriedade apropriada, por exemplo, o System.Management.Automation.Provider.CmdletProvider.Exclude e System.Management.Automation.Provider.CmdletProvider.Include properties.Por defeito, as sobrescrituras deste método não devem definir ou escrever objetos ocultos ao utilizador, a menos que a propriedade System.Management.Automation.Provider.CmdletProvider.Force esteja definida como
true. Um erro deve ser enviado ao método System.Management.Automation.Provider.CmdletProvider.WriteError se o caminho representar um item oculto e System.Management.Automation.Provider.CmdletProvider.Force estiver definido comofalse.A sua implementação do método System.Management.Automation.Provider.ItemCmdletProvider.SetItem deve chamar System.Management.Automation.Provider.CmdletProvider.ShouldProcess e verificar o seu valor de retorno antes de fazer quaisquer alterações ao armazenamento de dados. Este método é usado para confirmar a execução de uma operação quando é feita uma alteração ao armazenamento de dados, por exemplo, eliminar ficheiros. O método System.Management.Automation.Provider.CmdletProvider.ShouldProcess envia o nome do recurso a ser alterado para o utilizador, com o runtime do Windows PowerShell a ter em conta quaisquer definições de linha de comandos ou variáveis de preferência para determinar o que deve ser exibido.
Após a chamada para System.Management.Automation.Provider.CmdletProvider.ShouldProcess retorna
true, o método System.Management.Automation.Provider.ItemCmdletProvider.SetItem deve chamar o método System.Management.Automation.Provider.CmdletProvider.ShouldContinue . Este método envia uma mensagem ao utilizador para permitir feedback e verificar se a operação deve continuar. A chamada para System.Management.Automation.Provider.CmdletProvider.ShouldContinue permite uma verificação adicional para modificações potencialmente perigosas do sistema.
Recuperação de parâmetros dinâmicos para o SetItem
Por vezes, o Set-Item cmdlet requer parâmetros adicionais que são especificados dinamicamente em tempo de execução. Para fornecer estes parâmetros dinâmicos, o fornecedor de itens do Windows PowerShell deve implementar o método System.Management.Automation.Provider.ItemCmdletProvider.SetItemDynamicParameters . Este método recupera os parâmetros dinâmicos do item no caminho indicado e devolve um objeto que possui propriedades e campos com atributos de análise semelhantes a uma classe cmdlet ou a um objeto System.Management.Automation.RuntimeDefinedParameterDictionary . O runtime do Windows PowerShell usa o objeto devolvido para adicionar os parâmetros ao Set-Item cmdlet.
Este fornecedor não implementa este método. No entanto, o código seguinte é a implementação padrão deste método.
Limpar um item
Para limpar um item, o fornecedor de itens do Windows PowerShell implementa o método System.Management.Automation.Provider.ItemCmdletProvider.ClearItem para suportar chamadas do Clear-Item cmdlet. Este método apaga o elemento de dados no caminho especificado.
Este fornecedor não implementa este método. No entanto, o código seguinte é a implementação padrão deste método.
Coisas a lembrar sobre a implementação do ClearItem
As seguintes condições podem aplicar-se a uma implementação de System.Management.Automation.Provider.ItemCmdletProvider.ClearItem:
Ao definir a classe de fornecedor, um fornecedor de itens Windows PowerShell pode declarar capacidades de fornecedor de
ExpandWildcards,Filter,Include, ouExclude, a partir da enumeração System.Management.Automation.Provider.ProviderCapabilities . Nestes casos, a implementação do System.Management.Automation.Provider.ItemCmdletProvider.ClearItem deve garantir que o caminho passado para o método cumpre esses requisitos. Para isso, o método deve aceder à propriedade apropriada, por exemplo, o System.Management.Automation.Provider.CmdletProvider.Exclude e System.Management.Automation.Provider.CmdletProvider.Include properties.Por defeito, as sobrescrituras deste método não devem definir ou escrever objetos ocultos ao utilizador, a menos que a propriedade System.Management.Automation.Provider.CmdletProvider.Force esteja definida como
true. Um erro deve ser enviado para o método System.Management.Automation.Provider.CmdletProvider.WriteError se o caminho representar um item oculto ao utilizador e se System.Management.Automation.Provider.CmdletProvider.Force estiver definido comofalse.A sua implementação do método System.Management.Automation.Provider.ItemCmdletProvider.SetItem deve chamar System.Management.Automation.Provider.CmdletProvider.ShouldProcess e verificar o seu valor de retorno antes de fazer quaisquer alterações ao armazenamento de dados. Este método é usado para confirmar a execução de uma operação quando é feita uma alteração ao armazenamento de dados, por exemplo, eliminar ficheiros. O método System.Management.Automation.Provider.CmdletProvider.ShouldProcess envia o nome do recurso a ser alterado para o utilizador, com o runtime do Windows PowerShell, e trata de quaisquer definições de linha de comandos ou variáveis de preferência para determinar o que deve ser exibido.
Após a chamada para System.Management.Automation.Provider.CmdletProvider.ShouldProcess retorna
true, o método System.Management.Automation.Provider.ItemCmdletProvider.SetItem deve chamar o método System.Management.Automation.Provider.CmdletProvider.ShouldContinue . Este método envia uma mensagem ao utilizador para permitir feedback e verificar se a operação deve continuar. A chamada para System.Management.Automation.Provider.CmdletProvider.ShouldContinue permite uma verificação adicional para modificações potencialmente perigosas do sistema.
Recuperar parâmetros dinâmicos para o ClearItem
Por vezes, o Clear-Item cmdlet requer parâmetros adicionais que são especificados dinamicamente em tempo de execução. Para fornecer estes parâmetros dinâmicos, o fornecedor de itens do Windows PowerShell deve implementar o método System.Management.Automation.Provider.ItemCmdletProvider.ClearItemDynamicParameters . Este método recupera os parâmetros dinâmicos do item no caminho indicado e devolve um objeto que possui propriedades e campos com atributos de análise semelhantes a uma classe cmdlet ou a um objeto System.Management.Automation.RuntimeDefinedParameterDictionary . O runtime do Windows PowerShell usa o objeto devolvido para adicionar os parâmetros ao Clear-Item cmdlet.
Este fornecedor de itens não implementa este método. No entanto, o código seguinte é a implementação padrão deste método.
Realizar uma ação padrão para um item
Um fornecedor de itens Windows PowerShell pode implementar o método System.Management.Automation.Provider.ItemCmdletProvider.InvokeDefaultAction para suportar chamadas do Invoke-Item cmdlet, o que permite ao fornecedor executar uma ação por defeito para o item no caminho especificado. Por exemplo, o fornecedor do Sistema de Ficheiros pode usar este método para chamar o ShellExecute para um item específico.
Este fornecedor não implementa este método. No entanto, o código seguinte é a implementação padrão deste método.
Coisas a lembrar sobre a implementação do InvokeDefaultAction
As seguintes condições podem aplicar-se a uma implementação de System.Management.Automation.Provider.ItemCmdletProvider.InvokeDefaultAction:
Ao definir a classe de fornecedor, um fornecedor de itens Windows PowerShell pode declarar capacidades de fornecedor de
ExpandWildcards,Filter,Include, ouExclude, a partir da enumeração System.Management.Automation.Provider.ProviderCapabilities . Nestes casos, a implementação do System.Management.Automation.Provider.ItemCmdletProvider.InvokeDefaultAction deve garantir que o caminho passado para o método cumpre esses requisitos. Para isso, o método deve aceder à propriedade apropriada, por exemplo, o System.Management.Automation.Provider.CmdletProvider.Exclude e System.Management.Automation.Provider.CmdletProvider.Include properties.Por defeito, as sobrescrituras deste método não devem definir ou escrever objetos ocultos ao utilizador, a menos que a propriedade System.Management.Automation.Provider.CmdletProvider.Force esteja definida como
true. Um erro deve ser enviado para o método System.Management.Automation.Provider.CmdletProvider.WriteError se o caminho representar um item oculto ao utilizador e se System.Management.Automation.Provider.CmdletProvider.Force estiver definido comofalse.
Recuperar parâmetros dinâmicos para o InvokeDefaultAction
Por vezes, o Invoke-Item cmdlet requer parâmetros adicionais que são especificados dinamicamente em tempo de execução. Para fornecer estes parâmetros dinâmicos, o fornecedor de itens do Windows PowerShell deve implementar o método System.Management.Automation.Provider.ItemCmdletProvider.InvokeDefaultActionDynamicParameters . Este método recupera os parâmetros dinâmicos do item no caminho indicado e devolve um objeto que possui propriedades e campos com atributos de análise semelhantes a uma classe cmdlet ou a um objeto System.Management.Automation.RuntimeDefinedParameterDictionary . O runtime do Windows PowerShell usa o objeto devolvido para adicionar os parâmetros dinâmicos ao Invoke-Item cmdlet.
Este fornecedor de itens não implementa este método. No entanto, o código seguinte é a implementação padrão deste método.
Implementação de métodos e classes auxiliares
Este fornecedor de itens implementa vários métodos helper e classes que são usados pelos métodos públicos de override definidos pelo Windows PowerShell. O código destes métodos e classes auxiliares é mostrado na secção de Exemplo de Código .
Método NormalizePath
Este fornecedor de itens implementa um método auxiliar NormalizePath para garantir que o caminho tem um formato consistente. O formato especificado utiliza uma barra diagonal (\) como separador.
Método PathIsDrive
Este fornecedor de itens implementa um método auxiliar PathIsDrive para determinar se o caminho especificado é realmente o nome da unidade.
Método ChunkPath
Este fornecedor de itens implementa um método auxiliar ChunkPath que fragmenta o caminho especificado para que o fornecedor possa identificar os seus elementos individuais. Devolve um array composto pelos elementos do caminho.
Método GetTable
Este fornecedor de itens implementa o método helper GetTables que devolve um objeto DatabaseTableInfo que representa informação sobre a tabela especificada na chamada.
Método GetRow
O método System.Management.Automation.Provider.ItemCmdletProvider.GetItem deste fornecedor de itens chama o método helper GetRows . Este método helper recupera um objeto DatabaseRowInfo que representa informação sobre a linha especificada na tabela.
Classe DatabaseTableInfo
Este fornecedor de itens define uma classe DatabaseTableInfo que representa uma coleção de informação numa tabela de dados na base de dados. Esta classe é semelhante à classe System.IO.Directoryinfo .
O fornecedor de itens de exemplo define um método DatabaseTableInfo.GetTables que devolve uma coleção de objetos de informação de tabela que definem as tabelas na base de dados. Este método inclui um bloco try/catch para garantir que qualquer erro na base de dados aparece como uma linha com entradas zero.
Classe DatabaseRowInfo
Este fornecedor de itens define a classe auxiliar DatabaseRowInfo que representa uma linha numa tabela da base de dados. Esta classe é semelhante à classe System.IO.FileInfo .
O fornecedor de amostra define um método DatabaseRowInfo.GetRows para devolver uma coleção de objetos de informação de linha para a tabela especificada. Este método inclui um bloqueio try/catch para capturar exceções. Qualquer erro resultará na ausência de informação de linha.
Exemplo de código
Para código de exemplo completo, consulte AccessDbProviderSample03 Code Sample.
Definição dos tipos de objetos e formatação
Ao escrever um fornecedor, pode ser necessário adicionar membros a objetos existentes ou definir novos objetos. Quando terminar, crie um ficheiro Types que o Windows PowerShell possa usar para identificar os membros do objeto e um ficheiro Format que defina como o objeto é exibido. Para mais informações, veja Extensão dos Tipos de Objetos e Formatação.
Construir o fornecedor PowerShell do Windows
Veja Como Registar Cmdlets, Fornecedores e Aplicações Anfitriãs.
Testar o fornecedor PowerShell do Windows
Quando este fornecedor de itens do Windows PowerShell está registado no Windows PowerShell, só pode testar a funcionalidade básica e do disco do fornecedor. Para testar a manipulação de itens, deve também implementar funcionalidade de contentor descrita em Implementar um Fornecedor de PowerShell para Windows para Container.
Consulte também
- Windows PowerShell SDK
- Guia do Programador do Windows PowerShell
- Criação de Fornecedores Windows PowerShell
- Desenhar o seu fornecedor Windows PowerShell
- Extensão dos Tipos de Objetos e Formatação
- Como Funciona o PowerShell do Windows
- Criação de um fornecedor Container Windows PowerShell
- Criação de um Drive, fornecedor PowerShell Windows
- Como Registar Cmdlets, Fornecedores e Aplicações Anfitriãs