Requesting Confirmation from Cmdlets (Pedir Confirmação a Partir de Cmdlets)
Os cmdlets devem solicitar a confirmação quando estão prestes a fazer uma alteração no sistema que está fora do ambiente Windows PowerShell. Por exemplo, se um cmdlet estiver prestes a adicionar uma conta de utilizador ou parar um processo, o cmdlet deve exigir a confirmação do utilizador antes de prosseguir. Em contrapartida, se um cmdlet estiver prestes a alterar uma variável Windows PowerShell, o cmdlet não necessita de requerer confirmação.
Para fazer um pedido de confirmação, o cmdlet deve indicar que suporta pedidos de confirmação, e deve ligar para o Sistema.Management.Automation.Cmdlet.ShouldProcess and System.Management.Automation.Cmdlet.ShouldContinue (opcional) métodos para exibir uma mensagem de pedido de confirmação.
Solicitações de Confirmação de Apoio
Para apoiar os pedidos de confirmação, o cmdlet deve definir o SupportsShouldProcess
parâmetro do atributo Cmdlet a true
. Isto permite os Confirm
parâmetros e WhatIf
cmdlet fornecidos por Windows PowerShell. O Confirm
parâmetro permite ao utilizador controlar se o pedido de confirmação é apresentado. O WhatIf
parâmetro permite ao utilizador determinar se o cmdlet deve exibir uma mensagem ou realizar a sua ação. Não adicione manualmente os Confirm
parâmetros e WhatIf
os parâmetros a um cmdlet.
O exemplo a seguir mostra uma declaração de atributo Cmdlet que suporta pedidos de confirmação.
[Cmdlet(VerbsDiagnostic.Test, "RequestConfirmationTemplate1",
SupportsShouldProcess = true)]
Chamando os métodos de pedido de confirmação
No código cmdlet, ligue para o método System.Management.Automation.Cmdlet.ShouldProcess antes da operação que altera o sistema. Desenhe o cmdlet de modo a que, se a chamada devolver um valor false
de, a operação não seja executada, e o cmdlet processe a operação seguinte.
Chamando o Método DeveContinue
A maioria dos cmdlets solicitam confirmação usando apenas o método System.Management.Automation.Cmdlet.ShouldProcess. No entanto, alguns casos podem requerer confirmação adicional. Para estes casos, complemente o método System.Management.Automation.Cmdlet.ShouldProcessar com uma chamada para o método System.Management.Automation.Cmdlet.ShouldContinue. Isto permite ao cmdlet ou fornecedor controlar mais finamente o âmbito do Sim a toda a resposta à solicitação de confirmação.
Se um cmdlet chamar o sistema.Management.Automation.Cmdlet.ShouldContinue, o cmdlet também deve fornecer um Force
parâmetro de comutação. Se o utilizador especificar Force
quando o utilizador invoca o cmdlet, o cmdlet deve ainda ligar para o System.Management.Automation.Cmdlet.ShouldProcess,mas deve contornar a chamada para System.Management.Automation.Cmdlet.ShouldContinue.
System.Management.Automation.Cmdlet.ShouldContinue a lançar uma exceção quando é chamado de um ambiente não interativo onde o utilizador não pode ser solicitado. A adição de um Force
parâmetro garante que o comando ainda pode ser realizado quando é invocado num ambiente não interativo.
O exemplo a seguir mostra como ligar para o System.Management.Automation.Cmdlet.ShouldProcess and System.Management.Automation.Cmdlet.ShouldContinue.
if (ShouldProcess (...) )
{
if (Force || ShouldContinue(...))
{
// Add code that performs the operation.
}
}
O comportamento de um System.Management.Automation.Cmdlet.ShouldProcess call pode variar dependendo do ambiente em que o cmdlet é invocado. A utilização das diretrizes anteriores ajudará a garantir que o cmdlet se comporta de forma consistente com outros cmdlets, independentemente do ambiente de acolhimento.
Para um exemplo de chamada para o método System.Management.Automation.Cmdlet.ShouldProcess, consulte como solicitar confirmações.
Especificar o Nível de Impacto
Quando criar o cmdlet, especifique o nível de impacto (a gravidade) da alteração. Para tal, desa estale o valor ConfirmImpact
do parâmetro do atributo Cmdlet para Alto, Médio ou Baixo. Pode especificar um valor ConfirmImpact
apenas quando também especificar o SupportsShouldProcess
parâmetro para o cmdlet.
Para a maioria dos cmdlets, não tem de especificar explicitamente ConfirmImpact
. Em vez disso, utilize a definição padrão do parâmetro, que é Medium. Se definir ConfirmImpact
para High, a operação será confirmada por defeito. Reserve esta definição para ações altamente disruptivas, tais como reformatar um volume de disco rígido.
Chamando métodos de não confirmação
Se o cmdlet ou o fornecedor mensagem mensagem, mas não solicitar a confirmação, pode ligar para os três métodos seguintes. Evite utilizar o método System.Management.Automation.Cmdlet.WriteObject para enviar mensagens deste tipo porque System.Management.Automation.Cmdlet.WriteObject é intercalada com a saída normal do seu cmdlet ou fornecedor, o que dificulta a escrita de scripts.
Para alertar o utilizador e continuar com o funcionamento, o cmdlet ou fornecedor pode ligar para o método System.Management.Automation.Cmdlet.WriteWarning.
Para fornecer informações adicionais que o utilizador pode recuperar usando o
Verbose
parâmetro, o cmdlet ou fornecedor pode ligar para o método System.Management.Automation.Cmdlet.WriteVerbose.Para fornecer detalhes de nível de depurar para outros desenvolvedores ou para suporte ao produto, o cmdlet ou fornecedor pode ligar para o método System.Management.Automation.Cmdlet.WriteDebug. O utilizador pode recuperar esta informação utilizando o
Debug
parâmetro.
Os comandantes e fornecedores ligam primeiro para os seguintes métodos para solicitar a confirmação antes de tentarem realizar uma operação que altera um sistema fora do Windows PowerShell:
Fazem-no chamando o método System.Management.Automation.Cmdlet.Should Processprocess, o que leva o utilizador a confirmar a operação com base na forma como o utilizador invocou o comando.
Consulte também
Writing a Windows PowerShell Cmdlet (Escrever um Cmdlet do Windows PowerShell)