Żądanie potwierdzenia z poziomu poleceń cmdlet
Polecenia cmdlet powinny żądać potwierdzenia, gdy mają wprowadzić zmianę w systemie spoza Windows PowerShell operacyjnego. Jeśli na przykład polecenie cmdlet ma dodać konto użytkownika lub zatrzymać proces, przed kontynuowaniem polecenie cmdlet powinno wymagać potwierdzenia od użytkownika. Z kolei jeśli polecenie cmdlet ma zmienić zmienną Windows PowerShell, polecenie cmdlet nie musi wymagać potwierdzenia.
Aby można było wykonać żądanie potwierdzenia, polecenie cmdlet musi wskazać, że obsługuje żądania potwierdzenia, i musi wywołać metody System.Management.Automation.Cmdlet.ShouldProcess i System.Management.Automation.Cmdlet.ShouldContinue (opcjonalnie), aby wyświetlić komunikat żądania potwierdzenia.
Obsługa żądań potwierdzenia
Aby obsługiwać żądania potwierdzenia, polecenie cmdlet musi ustawić parametr SupportsShouldProcess
atrybutu polecenia cmdlet na true
. Umożliwia to parametry Confirm
WhatIf
polecenia cmdlet i , które są udostępniane przez Windows PowerShell. Parametr Confirm
umożliwia użytkownikowi kontrolowanie, czy żądanie potwierdzenia jest wyświetlane. Parametr umożliwia użytkownikowi określenie, czy WhatIf
polecenie cmdlet powinno wyświetlać komunikat, czy wykonywać jego akcję. Nie należy ręcznie dodawać parametrów Confirm
i WhatIf
do polecenia cmdlet.
W poniższym przykładzie pokazano deklarację atrybutu polecenia cmdlet, która obsługuje żądania potwierdzenia.
[Cmdlet(VerbsDiagnostic.Test, "RequestConfirmationTemplate1",
SupportsShouldProcess = true)]
Wywoływanie metod żądania potwierdzenia
W kodzie polecenia cmdlet wywołaj metodę System.Management.Automation.Cmdlet.ShouldProcess przed operacją, która zmienia system. Zaprojektuj polecenie cmdlet tak, aby jeśli wywołanie zwraca wartość , operacja nie jest wykonywana, a false
polecenie cmdlet przetwarza następną operację.
Wywoływanie metody ShouldContinue
Większość polecenia cmdlet żąda potwierdzenia tylko przy użyciu metody System.Management.Automation.Cmdlet.ShouldProcess. Jednak niektóre przypadki mogą wymagać dodatkowego potwierdzenia. W takich przypadkach należy uzupełnić wywołanie System.Management.Automation.Cmdlet.ShouldProcess wywołaniem metody System.Management.Automation.Cmdlet.ShouldContinue. Dzięki temu polecenie cmdlet lub dostawca może dokładniej kontrolować zakres tak do wszystkich odpowiedzi na monit o potwierdzenie.
Jeśli polecenie cmdlet wywołuje metodę System.Management.Automation.Cmdlet.ShouldContinue, to polecenie cmdlet musi również podać Force
parametr przełącznika. Jeśli użytkownik określi, kiedy użytkownik wywołuje polecenie cmdlet, polecenie cmdlet powinno nadal wywoływać polecenie Force
System.Management.Automation.Cmdlet.ShouldProcess,ale powinno pominąć wywołanie metody System.Management.Automation.Cmdlet.ShouldContinue.
System.Management.Automation.Cmdlet.ShouldContinue zgłasza wyjątek, gdy jest wywoływany ze środowiska nieinterakcyjnego, w którym nie można monitować użytkownika. Dodanie Force
parametru gwarantuje, że polecenie może być nadal wykonywane, gdy jest wywoływane w środowisku nieinterakcyjnym.
W poniższym przykładzie pokazano, jak wywołać polecenia System.Management.Automation.Cmdlet.ShouldProcess i System.Management.Automation.Cmdlet.ShouldContinue.
if (ShouldProcess (...) )
{
if (Force || ShouldContinue(...))
{
// Add code that performs the operation.
}
}
Zachowanie wywołania System.Management.Automation.Cmdlet.ShouldProcess może się różnić w zależności od środowiska, w którym jest wywoływane polecenie cmdlet. Użycie poprzednich wytycznych pomoże zapewnić, że polecenie cmdlet będzie działać spójnie z innymi poleceniami cmdlet, niezależnie od środowiska hosta.
Aby uzyskać przykład wywołania metody System.Management.Automation.Cmdlet.ShouldProcess, zobacz How to Request Confirmations (Jak żądać potwierdzeń).
Określanie poziomu wpływu
Podczas tworzenia polecenia cmdlet określ poziom wpływu (ważność) zmiany. W tym celu ustaw wartość parametru atrybutu ConfirmImpact
polecenia cmdlet na Wysoki, Średni lub Niski. Wartość można określić tylko ConfirmImpact
wtedy, gdy określono SupportsShouldProcess
również parametr polecenia cmdlet .
W przypadku większości cmdlet nie trzeba jawnie określać wartości ConfirmImpact
. Zamiast tego użyj domyślnego ustawienia parametru, które ma wartość Średni. Jeśli ConfirmImpact
ustawisz wartość Wysoki, operacja zostanie domyślnie potwierdzina. Zarezerwuj to ustawienie w przypadku akcji o wysokim stopniu zakłócenia, takich jak ponownie sformatowanie woluminu dysku twardego.
Wywoływanie metod niepotwierdzeń
Jeśli polecenie cmdlet lub dostawca musi wysłać komunikat, ale nie żąda potwierdzenia, może wywołać następujące trzy metody. Unikaj używania metody System.Management.Automation.Cmdlet.WriteObject do wysyłania komunikatów tego typu, ponieważ dane wyjściowe System.Management.Automation.Cmdlet.WriteObject są połączone z normalnymi danymi wyjściowymi polecenia cmdlet lub dostawcy, co utrudnia pisanie skryptów.
Aby ostrzec użytkownika i kontynuować operację, polecenie cmdlet lub dostawca może wywołać metodę System.Management.Automation.Cmdlet.WriteWarning.
Aby podać dodatkowe informacje, które użytkownik może pobrać przy użyciu parametru , polecenie cmdlet lub dostawca może wywołać metodę
Verbose
System.Management.Automation.Cmdlet.WriteVerbose.Aby udostępnić szczegóły na poziomie debugowania innym deweloperom lub uzyskać pomoc techniczną dla produktu, polecenie cmdlet lub dostawca może wywołać metodę System.Management.Automation.Cmdlet.WriteDebug. Użytkownik może pobrać te informacje przy użyciu
Debug
parametru .
Polecenia cmdlet i dostawcy najpierw wywołują następujące metody, aby zażądać potwierdzenia przed podjęciem próby wykonania operacji, która zmienia system poza Windows PowerShell:
W tym celu wywołują metodę System.Management.Automation.Cmdlet.Shouldprocess, która monituje użytkownika o potwierdzenie operacji na podstawie sposobu wywołania polecenia przez użytkownika.
Zobacz też
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla