Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
В этом примере показано, как вызывать методы System. Management. Automation. командлет. ShouldProcess и System. Management. Automation. командлет. ShouldContinue для запроса подтверждения от пользователя до выполнения действия.
Важно!
дополнительные сведения о том, как Windows PowerShell обрабатывает эти запросы, см. в разделе запрос подтверждения.
Запрос подтверждения
Убедитесь, что
SupportsShouldProcessпараметру атрибута командлет присвоено значениеtrue. (Для функций это параметр атрибута CmdletBinding.)[Cmdlet(VerbsDiagnostic.Test, "RequestConfirmationTemplate1", SupportsShouldProcess = true, ConfirmImpact = ConfirmImpact.High)]Примечание
Использование
SupportsShouldProcessотдельного не гарантирует, что пользователю будет предложено подтвердить. Запрос определяется значением$ConfirmPreferenceи влиянием действия. ИспользуйтеConfirmImpact, чтобы задать серьезность влияния операции.Добавьте
Forceпараметр в командлет, чтобы пользователь мог переопределить запрос на подтверждение.[Parameter()] public SwitchParameter Force { get { return force; } set { force = value; } } private bool force;Добавьте
ifинструкцию, которая использует возвращаемое значение метода System. Management. Automation. командлет. ShouldProcess , чтобы определить, вызывается ли метод System. Management. Automation. командлет. ShouldContinue .Добавьте второй
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.
}
}
}