Как запросить подтверждение

В этом примере показано, как вызывать методы System. Management. Automation. командлет. ShouldProcess и System. Management. Automation. командлет. ShouldContinue для запроса подтверждения от пользователя до выполнения действия.

Важно!

дополнительные сведения о том, как Windows PowerShell обрабатывает эти запросы, см. в разделе запрос подтверждения.

Запрос подтверждения

  1. Убедитесь, что SupportsShouldProcess параметру атрибута командлет присвоено значение true . (Для функций это параметр атрибута CmdletBinding.)

    [Cmdlet(VerbsDiagnostic.Test, "RequestConfirmationTemplate1",
            SupportsShouldProcess = true, ConfirmImpact = ConfirmImpact.High)]
    

    Примечание

    Использование SupportsShouldProcess отдельного не гарантирует, что пользователю будет предложено подтвердить. Запрос определяется значением $ConfirmPreference и влиянием действия. Используйте ConfirmImpact , чтобы задать серьезность влияния операции.

  2. Добавьте Force параметр в командлет, чтобы пользователь мог переопределить запрос на подтверждение.

    [Parameter()]
    public SwitchParameter Force
    {
      get { return force; }
      set { force = value; }
    }
    private bool force;
    
  3. Добавьте if инструкцию, которая использует возвращаемое значение метода System. Management. Automation. командлет. ShouldProcess , чтобы определить, вызывается ли метод System. Management. Automation. командлет. ShouldContinue .

  4. Добавьте второй if оператор, использующий возвращаемое значение метода System. Management. Automation. командлет. ShouldContinue и значение Force параметра, чтобы определить, следует ли выполнять операцию.

Пример

В следующем примере кода методы System. Management. Automation. командлет. ShouldProcess и System. Management. Automation. командлет. ShouldContinue вызываются из переопределения метода System. Management. Automation. командлета. ProcessRecord . Однако эти методы также можно вызывать из других методов обработки ввода.

protected override void ProcessRecord()
{
  if (ShouldProcess("ShouldProcess target"))
  {
    if (Force || ShouldContinue("", ""))
    {
      // Add code that performs the operation.
    }
  }
}

См. также

Запись командлета Windows PowerShell