Como Confirmar O Prompt no PowerShell

  1. Use o Switch -Confirm para Prompt de Confirmação no PowerShell
  2. Use a Declaração if para Prompt de Confirmação no PowerShell
  3. Use o Método PromptForChoice() para Prompt de Confirmação no PowerShell
  4. Use Abordagens Baseadas em Funções para Prompt de Confirmação no PowerShell
  5. Conclusão
Como Confirmar O Prompt no PowerShell

A ideia geral por trás do prompt de confirmação é criar uma opção para alternar entre diferentes ações. Por exemplo, quando o usuário escolhe Sim, o script deve continuar, e quando o usuário seleciona Não, o script deve ser encerrado.

O PowerShell pode automaticamente solicitar confirmação do usuário antes de realizar qualquer ação usando o switch -Confirm. Este tutorial apresentará diferentes métodos para pedir confirmação dos usuários para qualquer ação prosseguir no PowerShell.

Use o Switch -Confirm para Prompt de Confirmação no PowerShell

O PowerShell tem um conjunto de variáveis de preferência que afetam seu ambiente de operação e permitem que você personaliza seu comportamento. $ConfirmPreference é uma das variáveis de preferência que determina se o PowerShell solicita automaticamente confirmação antes de executar um cmdlet ou função.

Isso ajuda a solicitar confirmação antes de executar cmdlets ou funções com risco baixo, médio ou alto. Como a maioria dos cmdlets e funções é de risco médio, ele não pede confirmação se o valor da variável estiver definido como Alto.

$ConfirmPreference

Saída:

High

Você deve usar o switch -Confirm no comando para solicitar ao usuário uma confirmação. Isso força o comando a exibir o prompt de confirmação no PowerShell.

Uma maneira mais simples de usar o switch -Confirm seria usá-lo no cmdlet Remove-Item, que pode produzir uma ação de confirmação em um comando mais simples. O seguinte comando mostra um exemplo de seu uso.

Comando:

Remove-Item test.txt -Confirm

Saída:

Confirm
Are you sure you want to perform this action?
Performing the operation "Remove File" on target "C:\Users\rhntm\test.txt".
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): N

Na saída, o switch -Confirm força o PowerShell a exibir um prompt de confirmação. Este método é direto e ideal para cenários onde você deseja solicitar ao usuário uma simples confirmação de 'Sim' ou 'Não'.

Na GUI do PowerShell, isso parecerá assim.

confirmar prompt de troca no powershell

Use a Declaração if para Prompt de Confirmação no PowerShell

Você também pode usar a declaração if e fornecer as condições para continuar para os usuários. Por exemplo, o seguinte comando pergunta ao usuário se ele deseja continuar.

Comando:

$confirmation = Read-Host "Do you want to continue?"
if ($confirmation -eq 'y') {
    Write-Host "Welcome to DelftStack."
}

Saída:

Do you want to continue?: y
Welcome to DelftStack.

O cmdlet Read-Host é usado para ler a entrada de um usuário e armazenar a entrada na variável $confirmation. A declaração if verifica se a entrada do usuário ($confirmation) é igual a 'y', e se verdadeiro, executa a ação especificada.

Essa abordagem fornece opções extras para personalizar a mensagem exibida ao usuário e o que acontece quando ele faz uma escolha.

Use o Método PromptForChoice() para Prompt de Confirmação no PowerShell

No PowerShell, você também pode solicitar ao usuário uma confirmação usando o método PromptForChoice(). Ele exibe um diálogo que permite ao usuário selecionar uma opção de um conjunto de opções e prosseguir com a ação de acordo com suas escolhas.

O seguinte comando é um exemplo que solicita uma entrada de Sim/Não a um usuário. Definimos $title, $question e $choices para o prompt de confirmação.

Comando:

$title = 'Confirm'
$question = 'Do you want to continue?'
$choices = '&Yes', '&No'

$decision = $Host.UI.PromptForChoice($title, $question, $choices, 1)
if ($decision -eq 0) {
    Write-Host 'Your choice is Yes.'
}
else {
    Write-Host 'Your choice is No.'
}

Esta linha de código $decision = $Host.UI.PromptForChoice($title, $question, $choices, 1) apresenta uma caixa de diálogo para o usuário usando o método PromptForChoice(). Na declaração if, verifica se o valor armazenado na variável $decision é igual a 0 (o índice da primeira escolha no array $choices).

1ª Saída:

Confirm
Do you want to continue?
[Y] Yes  [N] No  [?] Help (default is "N"): Yes
Your choice is Yes.

Na 1ª saída, o usuário seleciona "Sim". Como resultado, a saída "Sua escolha é Sim." é impressa.

2ª Saída:

Confirm
Do you want to continue?
[Y] Yes  [N] No  [?] Help (default is "N"): No
Your choice is No.

Na 2ª saída, o usuário seleciona "Não", e o segundo comando dentro dos colchetes será executado. Portanto, "Sua escolha é Não." é impresso.

Este método oferece uma experiência de confirmação mais interativa e personalizável, tornando-a adequada para cenários complexos.

Se você executar o script acima na versão GUI do PowerShell, poderá visualizar a caixa de diálogo de confirmação.

PromptForChoice confirmação de prompt no powershell

Use Abordagens Baseadas em Funções para Prompt de Confirmação no PowerShell

Você pode criar funções personalizadas do PowerShell que incluam lógica de confirmação. Isso permite encapsular a lógica de confirmação dentro de funções e reutilizá-las em seus scripts.

Comando:

Function Confirm-Action {
    param (
        [string]$Message,
        [scriptblock]$Action
    )
    $confirmation = Read-Host $Message
    if ($confirmation -eq 'y') {
        & $Action
    }
}

Confirm-Action -Message "Do you want to continue?" -Action {
    Write-Host "Action executed."
}

A linha Function Confirm-Action { ... } define uma função do PowerShell chamada Confirm-Action. A função aceita dois parâmetros: $Message e $Action.

Esta linha, $confirmation = Read-Host $Message, solicita ao usuário uma entrada usando o cmdlet Read-Host e armazena a entrada na variável $confirmation. O parâmetro $Message especifica a mensagem exibida ao usuário.

A declaração if verifica se a entrada do usuário armazenada em $confirmation é igual ao caractere 'y'.

Saída:

Do you want to continue?: y
Action executed.

Quando você executa o comando, ele solicita ao usuário uma confirmação ("Você deseja continuar?") e executa a ação com a mensagem "Ação Executada" se o usuário escolher 'y'.

Conclusão

No PowerShell, os prompts de confirmação são essenciais para o controle e a segurança do usuário. Neste artigo, exploramos quatro métodos para implementar prompts de confirmação; o switch -Confirm simplifica os prompts básicos de 'Sim/Não', a declaração if com Read-Host permite personalização, o método PromptForChoice() fornece opções interativas avançadas e o uso de abordagens baseadas em funções para criar uma função personalizada que inclui lógica de confirmação, garantindo interações eficientes e seguras do usuário em scripts.

Esperamos que este tutorial ajude você a entender como solicitar aos usuários uma confirmação de 'Sim/Não' no PowerShell.

Está gostando dos nossos tutoriais? Inscreva-se no DelftStack no YouTube para nos apoiar na criação de mais vídeos tutoriais de alta qualidade. Inscrever-se
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website