Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Polecenia cmdlet powinny zażądać potwierdzenia, gdy zostaną one zmienione w systemie, który znajduje się poza środowiskiem programu Windows PowerShell. Jeśli na przykład polecenie cmdlet ma dodać konto użytkownika lub zatrzymać proces, polecenie cmdlet powinno wymagać potwierdzenia od użytkownika przed kontynuowaniem. Natomiast jeśli polecenie cmdlet ma zmienić zmienną programu Windows PowerShell, polecenie cmdlet nie musi wymagać potwierdzenia.
Aby wysłać żądanie potwierdzenia, polecenie cmdlet musi wskazywać, ż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 cmdlet na true. Umożliwia to Confirm i WhatIf parametry polecenia cmdlet udostępniane przez program Windows PowerShell. Parametr Confirm umożliwia użytkownikowi kontrolowanie, czy jest wyświetlane żądanie potwierdzenia. Parametr WhatIf umożliwia użytkownikowi określenie, czy polecenie cmdlet powinno wyświetlić komunikat, czy wykonać jego akcję. Nie należy ręcznie dodawać parametrów Confirm i WhatIf do polecenia cmdlet.
W poniższym przykładzie przedstawiono deklarację atrybutu 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 zwróci wartość false, operacja nie jest wykonywana, a polecenie cmdlet przetwarza następną operację.
Wywoływanie metody ShouldContinue
Większość poleceń cmdlet żąda potwierdzenia przy użyciu tylko metody System.Management.Automation.Cmdlet.ShouldProcess. Jednak niektóre przypadki mogą wymagać dodatkowego potwierdzenia. W takich przypadkach uzupełnij 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 dla wszystkich odpowiedzi na monit o potwierdzenie.
Jeśli polecenie cmdlet wywołuje metodę System.Management.Automation.Cmdlet.ShouldContinue, polecenie cmdlet musi również podać parametr przełącznika Force. Jeśli użytkownik określi Force, gdy użytkownik wywołuje polecenie cmdlet, polecenie cmdlet nadal powinno wywołać polecenie System.Management.Automation.Cmdlet.ShouldProcess, ale powinno pominąć wywołanie System.Management.Automation.Cmdlet.ShouldContinue.
System.Management.Automation.Cmdlet.ShouldContinue zgłosi wyjątek w przypadku wywołania go ze środowiska nieinterakcyjnego, w którym nie można wyświetlić monitu użytkownika. Dodanie parametru Force gwarantuje, że polecenie może być nadal wykonywane po wywołaniu go w środowisku nieinterakcyjnym.
W poniższym przykładzie pokazano, jak wywołać 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 wywoływane jest polecenie cmdlet. Użycie poprzednich wytycznych pomoże zapewnić, że polecenie cmdlet działa spójnie z innymi poleceniami cmdlet, niezależnie od środowiska hosta.
Aby zapoznać się z przykładem wywoływania metody System.Management.Automation.Cmdlet.ShouldProcess, zobacz Instrukcje żądania potwierdzenia.
Określanie poziomu wpływu
Podczas tworzenia polecenia cmdlet określ poziom wpływu (ważność) zmiany. W tym celu ustaw wartość parametru ConfirmImpact atrybutu cmdlet na Wartość Wysoka, Średnia lub Niska. Można określić wartość dla ConfirmImpact tylko wtedy, gdy określisz również parametr SupportsShouldProcess dla polecenia cmdlet.
W przypadku większości poleceń cmdlet nie trzeba jawnie określać ConfirmImpact. Zamiast tego użyj domyślnego ustawienia parametru , czyli Medium. Jeśli ustawisz ConfirmImpact na Wysoki, operacja zostanie domyślnie potwierdzona. Zarezerwuj to ustawienie dla bardzo destrukcyjnych akcji, takich jak ponowne sformatowanie woluminu dysku twardego.
Wywoływanie metod nieodpartych na potwierdzeniach
Jeśli polecenie cmdlet lub dostawca musi wysłać komunikat, ale nie zażą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 tych typów, ponieważ System.Management.Automation.Cmdlet.WriteObject danych wyjściowych jest przeplatane z normalnymi danymi wyjściowymi polecenia cmdlet lub dostawcy, co sprawia, że pisanie skryptu jest trudne.
Aby przestrogić 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
Verbose, polecenie cmdlet lub dostawca może wywołać metodę System.Management.Automation.Cmdlet.WriteVerbose.Aby zapewnić szczegółowe informacje na poziomie debugowania dla innych deweloperów lub pomocy technicznej 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 parametru
Debug.
Polecenia cmdlet i dostawcy najpierw wywołają następujące metody, aby zażądać potwierdzenia przed podjęciem próby wykonania operacji, która zmienia system poza programem Windows PowerShell:
W tym celu wywołuje metodę System.Management.Automation.Cmdlet.ShouldProcess, która monituje użytkownika o potwierdzenie operacji na podstawie sposobu wywołania polecenia przez użytkownika.