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.
Os cmdlets devem pedir confirmação quando fazem uma alteração ao sistema fora do ambiente PowerShell do Windows. Por exemplo, se um cmdlet estiver prestes a adicionar uma conta de usuário ou interromper um processo, o cmdlet deverá exigir a confirmação do usuário antes de prosseguir. Em contraste, se um cmdlet está prestes a alterar uma variável do Windows PowerShell, o cmdlet não precisa de confirmação.
Para fazer uma solicitação de confirmação, o cmdlet deve indicar que dá suporte a solicitações de confirmação e deve chamar os System.Management.Automation.Cmdlet.ShouldProcess e System.Management.Automation.Cmdlet.ShouldContinue métodos (opcionais) para exibir uma mensagem de solicitação de confirmação.
Pedidos de confirmação de suporte
Para dar suporte a solicitações de confirmação, o cmdlet deve definir o parâmetro SupportsShouldProcess do atributo Cmdlet como true. Isso habilita os parâmetros de cmdlet Confirm e WhatIf fornecidos pelo Windows PowerShell. O parâmetro Confirm permite que o usuário controle se a solicitação de confirmação é exibida. O parâmetro WhatIf permite que o usuário determine se o cmdlet deve exibir uma mensagem ou executar sua ação. Não adicione manualmente os Confirm parâmetros e WhatIf a um cmdlet.
O exemplo a seguir mostra uma declaração de atributo Cmdlet que dá suporte a solicitações de confirmação.
[Cmdlet(VerbsDiagnostic.Test, "RequestConfirmationTemplate1",
SupportsShouldProcess = true)]
Chamando os métodos de solicitação de confirmação
No código do cmdlet, chame o método System.Management.Automation.Cmdlet.ShouldProcess antes que a operação que altera o sistema seja executada. Projete o cmdlet de modo que, se a chamada devolver um valor de false, a operação não seja realizada e o cmdlet processe a operação seguinte.
Chamando o método ShouldContinue
A maioria dos cmdlets solicita confirmação usando apenas o método System.Management.Automation.Cmdlet.ShouldProcess. No entanto, alguns casos podem exigir confirmação adicional. Para esses casos, complemente a chamada System.Management.Automation.Cmdlet.ShouldProcess com uma chamada para o método System.Management.Automation.Cmdlet.ShouldContinue. Isso permite que o cmdlet ou provedor controle mais finamente o escopo do Sim para todos os resposta ao prompt de confirmação.
Se um cmdlet chamar o System.Management.Automation.Cmdlet.ShouldContinue método, o cmdlet também deverá fornecer um parâmetro de opção Force. Se o usuário especificar Force quando o usuário invocar o cmdlet, o cmdlet ainda deverá chamar System.Management.Automation.Cmdlet.ShouldProcess, mas deverá ignorar a chamada para System.Management.Automation.Cmdlet.ShouldContinue.
System.Management.Automation.Cmdlet.ShouldContinue lança uma exceção quando é chamada a partir de um ambiente não interativo onde o utilizador não pode ser solicitado. Adicionar um Force parâmetro garante que o comando ainda pode ser executado quando é invocado num ambiente não interativo.
O exemplo a seguir mostra como chamar System.Management.Automation.Cmdlet.ShouldProcess e System.Management.Automation.Cmdlet.ShouldContinue.
if (ShouldProcess (...) )
{
if (Force || ShouldContinue(...))
{
// Add code that performs the operation.
}
}
O comportamento de uma chamada de System.Management.Automation.Cmdlet.ShouldProcess pode variar dependendo do ambiente no qual o cmdlet é invocado. O uso das diretrizes anteriores ajudará a garantir que o cmdlet se comporte de forma consistente com outros cmdlets, independentemente do ambiente do host.
Especificar o nível de impacto
Ao criar o cmdlet, especifique o nível de impacto (a gravidade) da alteração. Para fazer isso, defina o valor do parâmetro ConfirmImpact do atributo Cmdlet como High, Medium ou Low. Você pode especificar um valor para ConfirmImpact somente quando também especificar o parâmetro SupportsShouldProcess para o cmdlet.
Para a maioria dos cmdlets, não é necessário especificar ConfirmImpactexplicitamente . Em vez disso, use a configuração padrão do parâmetro, que é Medium. Se você definir ConfirmImpact como Alto, a operação será confirmada por padrão. Reserve essa configuração para ações que causam grandes interrupções, como reformatar um volume de disco rígido.
Chamando métodos sem confirmação
Se o cmdlet ou provedor precisar enviar uma mensagem, mas não solicitar confirmação, ele poderá chamar os três métodos a seguir. Evite usar o método System.Management.Automation.Cmdlet.WriteObject para enviar mensagens desses tipos porque saída de System.Management.Automation.Cmdlet.WriteObject está misturada com a saída normal do seu cmdlet ou provedor, o que dificulta a escrita de scripts.
Para alertar o usuário e continuar com a operação, o cmdlet ou provedor pode chamar o System.Management.Automation.Cmdlet.WriteWarning método.
Para fornecer informações adicionais que o usuário pode recuperar usando o parâmetro
Verbose, o cmdlet ou provedor pode chamar o System.Management.Automation.Cmdlet.WriteVerbose método.Para fornecer detalhes em nível de depuração para outros desenvolvedores ou para suporte ao produto, o cmdlet ou provedor pode chamar o System.Management.Automation.Cmdlet.WriteDebug método. O usuário pode recuperar essas informações usando o parâmetro
Debug.
Os cmdlets e provedores primeiro chamam os seguintes métodos para solicitar confirmação antes de tentarem executar uma operação que altera um sistema fora do Windows PowerShell:
Eles fazem isso chamando o método System.Management.Automation.Cmdlet.ShouldProcess, que solicita que o usuário confirme a operação com base em como o usuário invocou o comando.