Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Krótki opis
Zmienne, które dostosują zachowanie programu PowerShell.
Długi opis
Program PowerShell zawiera zestaw zmiennych, które umożliwiają dostosowanie jego zachowania. Te zmienne preferencji działają jak opcje w systemach opartych na graficznym interfejsie użytkownika.
Zmienne preferencji wpływają na środowisko operacyjne programu PowerShell i wszystkie polecenia uruchamiane w środowisku. Niektóre polecenia cmdlet mają parametry, które umożliwiają zastąpienie zachowania preferencji dla określonego polecenia.
W poniższej tabeli wymieniono zmienne preferencji i ich wartości domyślne.
Program PowerShell zawiera następujące zmienne środowiskowe, które przechowują preferencje użytkownika. Aby uzyskać więcej informacji na temat tych zmiennych środowiskowych, zobacz about_Environment_Variables.
$Env:PSExecutionPolicyPreference$Env:PSModulePath
Nuta
Zmiany zmiennych preferencji mają zastosowanie tylko w zakresie, w jakim zostały wprowadzone, oraz ich zakresach podrzędnych. Można na przykład ograniczyć skutki zmiany zmiennej preferencji na jedną funkcję lub skrypt. Aby uzyskać więcej informacji, zobacz about_Scopes.
Praca ze zmiennymi preferencji
W tym dokumencie opisano każdą ze zmiennych preferencji.
Aby wyświetlić bieżącą wartość określonej zmiennej preferencji, wpisz nazwę zmiennej. Na przykład następujące polecenie wyświetla wartość zmiennej $ConfirmPreference.
$ConfirmPreference
High
Aby zmienić wartość zmiennej, użyj instrukcji przypisania. Na przykład poniższa instrukcja zmienia wartość parametru $ConfirmPreference na Średni.
$ConfirmPreference = "Medium"
Ustawione wartości są specyficzne dla bieżącej sesji programu PowerShell. Aby zmienne były skuteczne we wszystkich sesjach programu PowerShell, dodaj je do profilu programu PowerShell. Aby uzyskać więcej informacji, zobacz about_Profiles.
Zdalna praca
Po uruchomieniu poleceń na komputerze zdalnym polecenia zdalne podlegają tylko preferencjom ustawionym w kliencie programu PowerShell komputera zdalnego. Na przykład po uruchomieniu polecenia zdalnego wartość zmiennej $DebugPreference komputera zdalnego określa sposób, w jaki program PowerShell reaguje na komunikaty debugowania.
Aby uzyskać więcej informacji na temat poleceń zdalnych, zobacz about_Remote.
$ConfirmPreference
Określa, czy program PowerShell automatycznie monituje o potwierdzenie przed uruchomieniem polecenia cmdlet lub funkcji.
Zmienna $ConfirmPreference przyjmuje jedną z wartości wyliczenia ConfirmImpact: High, Medium, Lowlub None.
Polecenia cmdlet i funkcje są przypisywane ryzyko High, Mediumlub Low.
Jeśli wartość zmiennej $ConfirmPreference jest mniejsza lub równa ryzyku przypisanemu do polecenia cmdlet lub funkcji, program PowerShell automatycznie wyświetli monit o potwierdzenie przed uruchomieniem polecenia cmdlet lub funkcji. Aby uzyskać więcej informacji na temat przypisywania ryzyka do poleceń cmdlet lub funkcji, zobacz about_Functions_CmdletBindingAttribute.
Jeśli wartość zmiennej $ConfirmPreference jest None, program PowerShell nigdy nie wyświetli monitu przed uruchomieniem polecenia cmdlet lub funkcji.
Aby zmienić zachowanie potwierdzające dla wszystkich poleceń cmdlet i funkcji w sesji, zmień wartość zmiennej $ConfirmPreference.
Aby zastąpić $ConfirmPreference dla pojedynczego polecenia, użyj parametru Potwierdź polecenia cmdlet lub funkcji. Aby zażądać potwierdzenia, użyj -Confirm. Aby pominąć potwierdzenie, użyj -Confirm:$false.
Prawidłowe wartości $ConfirmPreference:
- None: program PowerShell nie wyświetla monitu automatycznie. Aby zażądać potwierdzenia określonego polecenia, użyj parametru Confirm polecenia cmdlet lub funkcji.
- niski: program PowerShell monituje o potwierdzenie przed uruchomieniem poleceń cmdlet lub funkcji o niskim, średnim lub wysokim ryzyku.
- średni: program PowerShell monituje o potwierdzenie przed uruchomieniem poleceń cmdlet lub funkcji o średnim lub wysokim ryzyku.
- High: program PowerShell monituje o potwierdzenie przed uruchomieniem poleceń cmdlet lub funkcji z wysokim ryzykiem.
Szczegółowe wyjaśnienie
Program PowerShell może automatycznie monitować o potwierdzenie przed wykonaniem akcji. Na przykład gdy polecenie cmdlet lub funkcja znacząco wpływa na system w celu usunięcia danych lub użycia znacznej ilości zasobów systemowych.
Remove-Item -Path C:\file.txt
Confirm
Are you sure you want to perform this action?
Performing operation "Remove File" on Target "C:\file.txt".
[Y] Yes [A] Yes to All [N] No [L] No to All [?] Help (default is "Y"):
Oszacowanie ryzyka jest atrybutem polecenia cmdlet lub funkcji znanej jako ConfirmImpact. Użytkownicy nie mogą go zmienić.
Polecenia cmdlet i funkcje, które mogą stanowić zagrożenie dla systemu, mają Potwierdzić parametr, którego można użyć do żądania lub pomijania potwierdzenia dla pojedynczego polecenia.
Większość poleceń cmdlet i funkcji zachowuje domyślną wartość Średni dla ConfirmImpact.
$ConfirmPreference jest domyślnie ustawiona na High.
W związku z tym rzadko polecenia automatycznie monitują o potwierdzenie, gdy użytkownicy nie określą parametru Potwierdź. Aby rozszerzyć automatyczne monitowanie o monitowanie o więcej poleceń cmdlet i funkcji, ustaw wartość $ConfirmPreference na średni lub Niski.
Przykłady
W tym przykładzie pokazano efekt wartości domyślnej zmiennej $ConfirmPreferenceHigh. Wartość High potwierdza tylko polecenia cmdlet i funkcje wysokiego ryzyka. Ponieważ większość poleceń cmdlet i funkcji jest średnim ryzykiem, nie są one automatycznie potwierdzane i Remove-Item usuwa plik. Dodanie -Confirm do polecenia powoduje wyświetlenie monitu użytkownika o potwierdzenie.
$ConfirmPreference
High
Remove-Item -Path C:\temp1.txt
Użyj -Confirm, aby zażądać potwierdzenia.
Remove-Item -Path C:\temp2.txt -Confirm
Confirm
Are you sure you want to perform this action?
Performing operation "Remove File" on Target "C:\temp2.txt".
[Y] Yes [A] Yes to All [N] No [L] No to All
[?] Help (default is "Y"):
W poniższym przykładzie pokazano efekt zmiany wartości $ConfirmPreference na Średni. Ponieważ większość poleceń cmdlet i funkcji jest średnim ryzykiem, są one automatycznie potwierdzane. Aby pominąć monit o potwierdzenie dla pojedynczego polecenia, użyj parametru Confirm z wartością $false.
$ConfirmPreference = "Medium"
Remove-Item -Path C:\temp2.txt
Confirm
Are you sure you want to perform this action?
Performing operation "Remove File" on Target "C:\temp2.txt".
[Y] Yes [A] Yes to All [N] No [L] No to All
[?] Help (default is "Y"):
Remove-Item -Path C:\temp3.txt -Confirm:$false
$DebugPreference
Określa, jak program PowerShell reaguje na debugowanie komunikatów generowanych przez skrypt, polecenie cmdlet lub dostawcę albo za pomocą polecenia Write-Debug w wierszu polecenia.
Zmienna $DebugPreference przyjmuje jedną z wartości wyliczenia ActionPreference: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspendlub Break.
Niektóre polecenia cmdlet wyświetlają komunikaty debugowania, które są zazwyczaj komunikatami technicznymi przeznaczonymi dla programistów i specjalistów pomocy technicznej. Domyślnie komunikaty debugowania nie są wyświetlane, ale można wyświetlać komunikaty debugowania, zmieniając wartość $DebugPreference.
Aby wyświetlić lub ukryć komunikaty debugowania dla określonego polecenia, można użyć Debugowanie wspólnego parametru polecenia cmdlet. Aby uzyskać więcej informacji, zobacz about_CommonParameters.
Prawidłowe wartości są następujące:
- Przerwij — wprowadź debuger po wystąpieniu błędu lub wystąpieniu wyjątku.
- Zatrzymaj: wyświetla komunikat debugowania i zatrzymuje wykonywanie. Zapisuje błąd w konsoli programu .
- Inquire: wyświetla komunikat debugowania i, czy chcesz kontynuować.
- Kontynuuj: wyświetla komunikat debugowania i kontynuuje wykonywanie.
- SilentlyContinue: (Ustawienie domyślne) Brak efektu. Komunikat debugowania nie jest wyświetlany i wykonywanie jest kontynuowane bez przerwy.
Dodanie Debugowanie wspólnego parametru do polecenia, gdy polecenie jest skonfigurowane do generowania komunikatu debugowania, zmienia wartość zmiennej $DebugPreference na Kontynuuj.
Przykłady
W poniższych przykładach pokazano efekt zmiany wartości $DebugPreference po wprowadzeniu polecenia Write-Debug w wierszu polecenia.
Zmiana dotyczy wszystkich komunikatów debugowania, w tym komunikatów generowanych przez polecenia cmdlet i skrypty. W przykładach pokazano parametr Debugowanie, który wyświetla lub ukrywa komunikaty debugowania związane z pojedynczym poleceniem.
W tym przykładzie pokazano efekt wartości domyślnej zmiennej $DebugPreferenceSilentlyContinue. Domyślnie komunikat debugowania polecenia cmdlet Write-Debug nie jest wyświetlany i trwa przetwarzanie. Gdy jest używany parametr Debugowanie, zastępuje preferencję pojedynczego polecenia. Zostanie wyświetlony komunikat debugowania.
$DebugPreference
SilentlyContinue
Write-Debug -Message "Hello, World"
Write-Debug -Message "Hello, World" -Debug
DEBUG: Hello, World
W tym przykładzie pokazano efekt $DebugPreference z wartością Kontynuuj. Zostanie wyświetlony komunikat debugowania, a polecenie będzie nadal przetwarzane.
$DebugPreference = "Continue"
Write-Debug -Message "Hello, World"
DEBUG: Hello, World
W tym przykładzie użyto parametru debugowania z wartością $false, aby pominąć komunikat dla pojedynczego polecenia. Komunikat debugowania nie jest wyświetlany.
Write-Debug -Message "Hello, World" -Debug:$false
W tym przykładzie pokazano efekt ustawiania $DebugPreference wartości Stop. Zostanie wyświetlony komunikat debugowania i polecenie zostanie zatrzymane.
$DebugPreference = "Stop"
Write-Debug -Message "Hello, World"
DEBUG: Hello, World
Write-Debug : The running command stopped because the preference variable
"DebugPreference" or common parameter is set to Stop: Hello, World
At line:1 char:1
+ Write-Debug -Message "Hello, World"
W tym przykładzie użyto parametru debugowania z wartością $false, aby pominąć komunikat dla pojedynczego polecenia. Komunikat debugowania nie jest wyświetlany i przetwarzanie nie jest zatrzymane.
Write-Debug -Message "Hello, World" -Debug:$false
W tym przykładzie pokazano efekt ustawiania $DebugPreference na wartość Inquire. Zostanie wyświetlony komunikat debugowania i zostanie wyświetlony monit o potwierdzenie.
$DebugPreference = "Inquire"
Write-Debug -Message "Hello, World"
DEBUG: Hello, World
Confirm
Continue with this operation?
[Y] Yes [A] Yes to All [H] Halt Command [?] Help (default is "Y"):
W tym przykładzie użyto parametru debugowania z wartością $false, aby pominąć komunikat dla pojedynczego polecenia. Komunikat debugowania nie jest wyświetlany i trwa przetwarzanie.
Write-Debug -Message "Hello, World" -Debug:$false
$ErrorActionPreference
Określa, jak program PowerShell reaguje na błąd, który nie kończy przetwarzania polecenia cmdlet. Na przykład przy użyciu wiersza polecenia lub skryptu, polecenia cmdlet lub dostawcy, takich jak błędy wygenerowane przez polecenie cmdlet Write-Error.
Zmienna $ErrorActionPreference przyjmuje jedną z wartości wyliczenia ActionPreference: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspendlub Break.
Aby zastąpić preferencję określonego polecenia, można użyć ErrorAction wspólnego parametru polecenia.
Prawidłowe wartości są następujące:
- Przerwij — wprowadź debuger po wystąpieniu błędu lub wystąpieniu wyjątku.
- Kontynuuj: (ustawienie domyślne) Wyświetla komunikat o błędzie i kontynuuje wykonywanie.
-
Ignoruj: pomija komunikat o błędzie i kontynuuje wykonywanie polecenia. Wartość Ignoruj jest przeznaczona do użycia dla poszczególnych poleceń, a nie do użycia jako zapisanych preferencji.
Ignoruj nie jest prawidłową wartością zmiennej
$ErrorActionPreference. - inquire: wyświetla komunikat o błędzie i, czy chcesz kontynuować.
- SilentlyContinue: Brak efektu. Komunikat o błędzie nie jest wyświetlany i wykonywanie jest kontynuowane bez przerwy.
- Zatrzymaj: wyświetla komunikat o błędzie i zatrzymuje wykonywanie. Oprócz wygenerowanego błędu wartość Stop generuje obiekt ActionPreferenceStopException do strumienia błędów.
-
Wstrzymaj: automatycznie zawiesza zadanie przepływu pracy, aby umożliwić dalsze badanie. Po zbadaniu można wznowić przepływ pracy. Wartość Wstrzymywanie jest przeznaczona do użycia na polecenie, a nie do użycia jako zapisane preferencje.
Suspend nie jest prawidłową wartością zmiennej
$ErrorActionPreference.
$ErrorActionPreference i parametr ErrorAction nie mają wpływu na sposób, w jaki program PowerShell reaguje na błędy zakończenia, które zatrzymują przetwarzanie poleceń cmdlet. Aby uzyskać więcej informacji na temat wspólnego parametru ErrorAction, zobacz about_CommonParameters.
Wiele natywnych poleceń zapisuje w stderr jako alternatywny strumień dodatkowych informacji. Takie zachowanie może spowodować zamieszanie podczas przeglądania błędów lub utratę dodatkowych informacji wyjściowych dla użytkownika, jeśli $ErrorActionPreference jest ustawiony na stan wyciszenia danych wyjściowych.
Począwszy od programu PowerShell 7.2, rekordy błędów przekierowane z natywnych poleceń, na przykład w przypadku używania operatorów przekierowania (2>&1), nie są zapisywane w zmiennej $Error, a zmienna preferencji $ErrorActionPreference nie ma wpływu na przekierowane dane wyjściowe.
Program PowerShell 7.3 dodał funkcję eksperymentalną, która umożliwia kontrolowanie sposobu obsługi komunikatów zapisywanych w stderr.
Aby uzyskać więcej informacji, zobacz $PSNativeCommandUseErrorActionPreference.
Przykłady
Te przykłady pokazują efekt różnych wartości zmiennej $ErrorActionPreference. Parametr ErrorAction służy do zastępowania wartości $ErrorActionPreference.
W tym przykładzie przedstawiono wartość domyślną $ErrorActionPreferenceKontynuuj. Zostanie wygenerowany błąd, który nie kończy się. Zostanie wyświetlony komunikat, a przetwarzanie będzie kontynuowane.
# Change the ErrorActionPreference to 'Continue'
$ErrorActionPreference = 'Continue'
# Generate a non-terminating error and continue processing the script.
Write-Error -Message 'Test Error' ; Write-Host 'Hello World'
Write-Error: Test Error
Hello World
W tym przykładzie przedstawiono wartość domyślną $ErrorActionPreferenceInquire. Zostanie wygenerowany błąd i zostanie wyświetlony monit o akcję.
# Change the ErrorActionPreference to 'Inquire'
$ErrorActionPreference = 'Inquire'
Write-Error -Message 'Test Error' ; Write-Host 'Hello World'
Confirm
Test Error
[Y] Yes [A] Yes to All [H] Halt Command [S] Suspend [?] Help (default is "Y"):
W tym przykładzie przedstawiono $ErrorActionPreference ustawioną na SilentlyContinue.
Komunikat o błędzie jest pomijany.
# Change the ErrorActionPreference to 'SilentlyContinue'
$ErrorActionPreference = 'SilentlyContinue'
# Generate an error message
Write-Error -Message 'Test Error' ; Write-Host 'Hello World'
# Error message is suppressed and script continues processing
Hello World
W tym przykładzie przedstawiono $ErrorActionPreference ustawioną na Zatrzymaj. Pokazuje również dodatkowy obiekt wygenerowany w zmiennej $Error.
# Change the ErrorActionPreference to 'Stop'
$ErrorActionPreference = 'Stop'
# Error message is generated and script stops processing
Write-Error -Message 'Test Error' ; Write-Host 'Hello World'
# Show the ActionPreferenceStopException and the error generated
$Error[0]
$Error[1]
Write-Error: Test Error
ErrorRecord : Test Error
WasThrownFromThrowStatement : False
TargetSite : System.Collections.ObjectModel.Collection`1[System.Management.Automation.PSObject]
Invoke(System.Collections.IEnumerable)
StackTrace : at System.Management.Automation.Runspaces.PipelineBase.Invoke(IEnumerable input)
at Microsoft.PowerShell.Executor.ExecuteCommandHelper(Pipeline tempPipeline,
Exception& exceptionThrown, ExecutionOptions options)
Message : The running command stopped because the preference variable "ErrorActionPreference" or
common parameter is set to Stop: Test Error
Data : {System.Management.Automation.Interpreter.InterpretedFrameInfo}
InnerException :
HelpLink :
Source : System.Management.Automation
HResult : -2146233087
Write-Error: Test Error
$ErrorView
Określa format wyświetlania komunikatów o błędach w programie PowerShell.
Zmienna $ErrorView przyjmuje jedną z wartości wyliczenia ErrorView: NormalView, CategoryViewlub ConciseView.
Prawidłowe wartości są następujące:
ConciseView: (Ustawienie domyślne) Zawiera zwięzły komunikat o błędzie i refaktoryzowany widok dla zaawansowanych konstruktorów modułów. Od programu PowerShell 7.2, jeśli błąd pochodzi z wiersza polecenia lub modułu skryptu, dane wyjściowe są pojedynczym wierszem komunikatu o błędzie. W przeciwnym razie zostanie wyświetlony komunikat o błędzie wielowierszowym zawierający błąd i wskaźnik do błędu pokazujący, gdzie występuje w tym wierszu. Jeśli terminal obsługuje terminal wirtualny, kody kolorów ANSI są używane do zapewnienia akcentu koloru. Kolor akcentu można zmienić na
$Host.PrivateData.ErrorAccentColor. Użyj polecenia cmdletGet-Errorw celu uzyskania kompleksowego szczegółowego widoku w pełni kwalifikowanego błędu, w tym wyjątków wewnętrznych.ConciseView został dodany w programie PowerShell 7.
NormalView: szczegółowy widok przeznaczony dla większości użytkowników. Składa się z opisu błędu i nazwy obiektu zaangażowanego w błąd.
CategoryView: zwięzły, ustrukturyzowany widok przeznaczony dla środowisk produkcyjnych. Format jest następujący:
{Category}: ({TargetName}:{TargetType}):[{Activity}], {Reason}
Aby uzyskać więcej informacji na temat pól w CategoryView, zobacz ErrorCategoryInfo, klasa.
Przykłady
W tym przykładzie pokazano, jak pojawia się błąd, gdy wartość $ErrorView jest domyślna, ConciseView.
Get-ChildItem służy do znajdowania nieistniejącego katalogu.
Get-ChildItem -Path 'C:\NoRealDirectory'
Get-ChildItem: Can't find path 'C:\NoRealDirectory' because it doesn't exist.
W tym przykładzie pokazano, jak pojawia się błąd, gdy wartość $ErrorView jest domyślna, ConciseView.
Script.ps1 jest uruchamiany i zgłasza błąd z instrukcji Get-Item.
./Script.ps1
Get-Item: C:\Script.ps1
Line |
11 | Get-Item -Path .\stuff
| ^ Can't find path 'C:\demo\stuff' because it doesn't exist.
W tym przykładzie pokazano, jak pojawia się błąd, gdy wartość $ErrorView zostanie zmieniona na NormalView.
Get-ChildItem służy do znajdowania nieistniejącego pliku.
Get-ChildItem -Path C:\nofile.txt
Get-ChildItem : Can't find path 'C:\nofile.txt' because it doesn't exist.
At line:1 char:1
+ Get-ChildItem -Path C:\nofile.txt
W tym przykładzie pokazano, jak ten sam błąd występuje, gdy wartość $ErrorView zostanie zmieniona na CategoryView.
$ErrorView = "CategoryView"
Get-ChildItem -Path C:\nofile.txt
ObjectNotFound: (C:\nofile.txt:String) [Get-ChildItem], ItemNotFoundException
W tym przykładzie pokazano, że wartość $ErrorView wpływa tylko na wyświetlanie błędu. Nie zmienia struktury obiektu błędu przechowywanego w $Error zmiennej automatycznej. Aby uzyskać informacje o zmiennej automatycznej $Error, zobacz about_Automatic_Variables.
Następujące polecenie przyjmuje obiekt ErrorRecord skojarzony z najnowszym błędem w tablicy błędów, element 0i formatuje właściwości obiektu na liście.
$Error[0] | Format-List -Property * -Force
PSMessageDetails :
Exception : System.Management.Automation.ItemNotFoundException:
Cannot find path 'C:\nofile.txt' because it does
not exist.
at System.Management.Automation.SessionStateInternal.
GetChildItems(String path, Boolean recurse, UInt32
depth, CmdletProviderContext context)
at System.Management.Automation.ChildItemCmdlet
ProviderIntrinsics.Get(String path, Boolean
recurse, UInt32 depth, CmdletProviderContext context)
at Microsoft.PowerShell.Commands.GetChildItemCommand.
ProcessRecord()
TargetObject : C:\nofile.txt
CategoryInfo : ObjectNotFound: (C:\nofile.txt:String) [Get-ChildItem],
ItemNotFoundException
FullyQualifiedErrorId : PathNotFound,
Microsoft.PowerShell.Commands.GetChildItemCommand
ErrorDetails :
InvocationInfo : System.Management.Automation.InvocationInfo
ScriptStackTrace : at <ScriptBlock>, <No file>: line 1
PipelineIterationInfo : {0, 1}
$FormatEnumerationLimit
Określa liczbę wyliczonych elementów uwzględnionych w wyświetlaczu. Ta zmienna nie ma wpływu na obiekty bazowe, tylko wyświetlanie. Jeśli wartość $FormatEnumerationLimit jest mniejsza niż liczba wyliczonych elementów, program PowerShell dodaje wielokropek (...), aby wskazać, że elementy nie są wyświetlane.
Prawidłowe wartości: Liczba całkowita (Int32)
wartość domyślna: 4
Przykłady
W tym przykładzie pokazano, jak za pomocą zmiennej $FormatEnumerationLimit poprawić wyświetlanie wyliczonych elementów.
Polecenie w tym przykładzie generuje tabelę zawierającą listę wszystkich usług uruchomionych na komputerze w dwóch grupach: jeden dla uruchamiania usług i jeden dla zatrzymanych usług. Używa Get-Service polecenia , aby pobrać wszystkie usługi, a następnie wysyła wyniki za pośrednictwem potoku do polecenia cmdlet Group-Object, które grupuje wyniki według stanu usługi.
Wynikiem jest tabela zawierająca stan w kolumnie Nazwa oraz procesy w kolumnie grupy. Aby zmienić etykiety kolumn, użyj tabeli skrótów, zobacz about_Hash_Tables. Aby uzyskać więcej informacji, zobacz przykłady w Format-Table.
Znajdź bieżącą wartość $FormatEnumerationLimit.
$FormatEnumerationLimit
4
Wyświetl listę wszystkich usług pogrupowanych według stanu . Dla każdego stanu znajduje się maksymalnie cztery usługi wymienione w kolumnie grupy, ponieważ $FormatEnumerationLimit ma wartość 4.
Get-Service | Group-Object -Property Status
Count Name Group
----- ---- -----
60 Running {AdtAgent, ALG, Ati HotKey Poller, AudioSrv...}
41 Stopped {Alerter, AppMgmt, aspnet_state, ATI Smart...}
Aby zwiększyć liczbę elementów na liście, zwiększ wartość $FormatEnumerationLimit do 1000. Użyj Get-Service i Group-Object, aby wyświetlić usługi.
$FormatEnumerationLimit = 1000
Get-Service | Group-Object -Property Status
Count Name Group
----- ---- -----
60 Running {AdtAgent, ALG, Ati HotKey Poller, AudioSrv, BITS, CcmExec...
41 Stopped {Alerter, AppMgmt, aspnet_state, ATI Smart, Browser, CiSvc...
Użyj Format-Table z parametrem Wrap, aby wyświetlić listę usług.
Get-Service | Group-Object -Property Status | Format-Table -Wrap
Count Name Group
----- ---- -----
60 Running {AdtAgent, ALG, Ati HotKey Poller, AudioSrv, BITS, CcmExec,
Client for NFS, CryptSvc, DcomLaunch, Dhcp, dmserver,
Dnscache, ERSvc, Eventlog, EventSystem, FwcAgent, helpsvc,
HidServ, IISADMIN, InoRPC, InoRT, InoTask, lanmanserver,
lanmanworkstation, LmHosts, MDM, Netlogon, Netman, Nla,
NtLmSsp, PlugPlay, PolicyAgent, ProtectedStorage, RasMan,
RemoteRegistry, RpcSs, SamSs, Schedule, seclogon, SENS,
SharedAccess, ShellHWDetection, SMT PSVC, Spooler,
srservice, SSDPSRV, stisvc, TapiSrv, TermService, Themes,
TrkWks, UMWdf, W32Time, W3SVC, WebClient, winmgmt, wscsvc,
wuauserv, WZCSVC, zzInterix}
41 Stopped {Alerter, AppMgmt, aspnet_state, ATI Smart, Browser, CiSvc,
ClipSrv, clr_optimization_v2.0.50727_32, COMSysApp,
CronService, dmadmin, FastUserSwitchingCompatibility,
HTTPFilter, ImapiService, Mapsvc, Messenger, mnmsrvc,
MSDTC, MSIServer, msvsmon80, NetDDE, NetDDEdsdm, NtmsSvc,
NVSvc, ose, RasAuto, RDSessMgr, RemoteAccess, RpcLocator,
SCardSvr, SwPrv, SysmonLog, TlntSvr, upnphost, UPS, VSS,
WmdmPmSN, Wmi, WmiApSrv, xmlprov}
$InformationPreference
Zmienna $InformationPreference umożliwia ustawianie preferencji strumienia informacji, które mają być wyświetlane użytkownikom. W szczególności komunikaty informacyjne dodane do poleceń lub skryptów przez dodanie polecenia cmdlet Write-Information. Jeśli jest używany parametr InformationAction, jego wartość zastępuje wartość zmiennej $InformationPreference.
Write-Information wprowadzono w programie PowerShell 5.0.
Zmienna $InformationPreference przyjmuje jedną z wartości wyliczenia ActionPreference: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspendlub Break.
Prawidłowe wartości są następujące:
- Break — wprowadź debuger podczas zapisywania w strumieniu informacji.
-
Zatrzymaj: zatrzymuje polecenie lub skrypt w wystąpieniu polecenia
Write-Information. -
Inquire: Wyświetla komunikat informacyjny określony w
Write-Informationpolecenia, a następnie, czy chcesz kontynuować. - Kontynuuj: wyświetla komunikat informacyjny i kontynuuje działanie.
- SilentlyContinue: (Ustawienie domyślne) Brak efektu. Komunikaty informacyjne nie są wyświetlane, a skrypt będzie kontynuowany bez przerwy.
$Log*Event
Zmienne preferencji dziennika *zdarzenia określają, które typy zdarzeń są zapisywane w dzienniku zdarzeń programu PowerShell w Podglądzie zdarzeń. Domyślnie rejestrowane są tylko zdarzenia aparatu i dostawcy. Można jednak użyć zmiennych preferencji Log*Event, aby dostosować dziennik, na przykład rejestrowanie zdarzeń dotyczących poleceń.
Zmienne preferencji Log*Event są następujące:
-
$LogCommandHealthEvent: rejestruje błędy i wyjątki w inicjowaniu i przetwarzaniu poleceń. Wartość domyślna to$false(nie jest rejestrowana). -
$LogCommandLifecycleEvent: rejestruje uruchamianie i zatrzymywanie poleceń oraz potoków poleceń i wyjątków zabezpieczeń w odnajdywanie poleceń. Wartość domyślna to$false(nie jest rejestrowana). -
$LogEngineHealthEvent: rejestruje błędy i błędy sesji. Wartość domyślna to$true(zarejestrowane). -
$LogEngineLifecycleEvent: rejestruje otwieranie i zamykanie sesji. Wartość domyślna to$true(zarejestrowane). -
$LogProviderHealthEvent: błędy dostawcy dzienników, takie jak błędy odczytu i zapisu, błędy wyszukiwania i błędy wywołania. Wartość domyślna to$true(zarejestrowane). -
$LogProviderLifecycleEvent: rejestruje dodawanie i usuwanie dostawców programu PowerShell. Wartość domyślna to$true(zarejestrowane). Aby uzyskać informacje o dostawcach programu PowerShell, zobacz about_Providers.
Aby włączyć Log*Event, wpisz zmienną z wartością $true, na przykład:
$LogCommandLifecycleEvent = $true
Aby wyłączyć typ zdarzenia, wpisz zmienną z wartością $false, na przykład:
$LogCommandLifecycleEvent = $false
Zdarzenia, które włączysz, są skuteczne tylko dla bieżącej konsoli programu PowerShell. Aby zastosować konfigurację do wszystkich konsol, zapisz ustawienia zmiennych w profilu programu PowerShell. Aby uzyskać więcej informacji, zobacz about_Profiles.
$MaximumHistoryCount
Określa liczbę poleceń zapisanych w historii poleceń dla bieżącej sesji.
Prawidłowe wartości: 1 – 32768 (Int32)
domyślne: 4096
Aby określić liczbę poleceń bieżących zapisanych w historii poleceń, wpisz:
(Get-History).Count
Aby wyświetlić polecenia zapisane w historii sesji, użyj polecenia cmdlet Get-History. Aby uzyskać więcej informacji, zobacz about_History.
$OFS
Separator pola wyjściowego (OFS) określa znak, który oddziela elementy tablicy przekonwertowanej na ciąg.
Prawidłowe wartości: dowolny ciąg.
domyślne: spacja
Domyślnie zmienna $OFS nie istnieje, a separator pliku wyjściowego jest spacją, ale można dodać tę zmienną i ustawić ją na dowolny ciąg. Wartość $OFS można zmienić w sesji, wpisując $OFS="<value>".
Nuta
Jeśli oczekujesz wartości domyślnej spacji (" ") w danych wyjściowych skryptu, modułu lub konfiguracji, uważaj, aby wartość domyślna $OFS nie została zmieniona w innym miejscu w kodzie.
Przykłady
W tym przykładzie pokazano, że miejsce jest używane do oddzielania wartości, gdy tablica jest konwertowana na ciąg. W takim przypadku tablica liczb całkowitych jest przechowywana w zmiennej, a następnie zmienna jest rzutowana jako ciąg.
$array = 1,2,3,4
[string]$array
1 2 3 4
Aby zmienić separator, dodaj zmienną $OFS, przypisując do niej wartość.
Zmienna musi mieć nazwę $OFS.
$OFS = "+"
[string]$array
1+2+3+4
Aby przywrócić domyślne zachowanie, możesz przypisać spację (" ") do wartości $OFS lub usunąć zmienną. Następujące polecenia usuwają zmienną, a następnie sprawdzają, czy separator jest spacją.
Remove-Variable OFS
[string]$array
1 2 3 4
$OutputEncoding
Określa metodę kodowania znaków używaną przez program PowerShell podczas potokowania danych do aplikacji natywnych.
Nuta
W większości scenariuszy wartość $OutputEncoding powinna być zgodna z wartością [Console]::InputEncoding.
Prawidłowe wartości są następujące: Obiekty pochodzące z klasy Kodowanie, takie jak ASCIIEncoding, UTF7Encoding, UTF8Encoding, UTF32Encodingi UnicodeEncoding.
domyślny: utF8Encoding obiektu.
Przykłady
Pierwsze polecenie znajduje wartość $OutputEncoding. Ponieważ wartość jest obiektem kodowania, wyświetl tylko jego właściwość EncodingName.
$OutputEncoding.EncodingName
W pozostałych przykładach użyto następującego skryptu programu PowerShell zapisanego jako hexdump.ps1, aby zilustrować zachowanie $OutputEncoding.
$inputStream = [Console]::OpenStandardInput()
try {
$buffer = [byte[]]::new(1024)
$read = $inputStream.Read($buffer, 0, $buffer.Length)
Format-Hex -InputObject $buffer -Count $read
} finally {
$inputStream.Dispose()
}
W poniższym przykładzie pokazano, jak wartość ciągu café jest kodowana do bajtów podczas potoku do hexdump.ps1 utworzonego powyżej. Pokazuje, że wartość ciągu jest kodowana przy użyciu schematu UTF8Encoding.
'café' | pwsh -File ./hexdump.ps1
Label: Byte[] (System.Byte[]) <28873E25>
Offset Bytes Ascii
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
------ ----------------------------------------------- -----
0000000000000000 63 61 66 C3 A9 0D 0A caf�
W poniższym przykładzie pokazano, jak bajty zmieniają się podczas zmiany kodowania na UnicodeEncoding.
$OutputEncoding = [System.Text.Encoding]::Unicode
'café' | pwsh -File ./hexdump.ps1
Label: Byte[] (System.Byte[]) <515A7DC3>
Offset Bytes Ascii
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
------ ----------------------------------------------- -----
0000000000000000 FF FE 63 00 61 00 66 00 E9 00 0D 00 0A 00 ÿþc a f é � �
$ProgressPreference
Określa sposób reagowania programu PowerShell na aktualizacje postępu generowane przez skrypt, polecenie cmdlet lub dostawcę, takie jak paski postępu generowane przez polecenie cmdlet Write-Progress. Polecenie cmdlet Write-Progress tworzy paski postępu, które pokazują stan polecenia.
Zmienna $ProgressPreference przyjmuje jedną z wartości wyliczenia ActionPreference: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspendlub Break.
Prawidłowe wartości są następujące:
- Break — wprowadź debuger podczas zapisywania w strumieniu Postęp.
- Zatrzymaj: nie wyświetla paska postępu. Zamiast tego wyświetla komunikat o błędzie i zatrzymuje wykonywanie.
-
Zapytanie: nie wyświetla paska postępu. Monituje o uprawnienie do kontynuowania. Jeśli odpowiesz przy użyciu
YlubA, zostanie wyświetlony pasek postępu. - Kontynuuj: (ustawienie domyślne) Wyświetla pasek postępu i kontynuuje wykonywanie.
- SilentlyContinue: wykonuje polecenie, ale nie wyświetla paska postępu.
$PSDefaultParameterValues
Określa wartości domyślne parametrów poleceń cmdlet i funkcji zaawansowanych.
Wartość $PSDefaultParameterValues to tabela skrótu, w której klucz składa się z nazwy polecenia cmdlet i nazwy parametru oddzielonego dwukropkiem (:). Wartość jest niestandardową wartością domyślną, którą określisz.
$PSDefaultParameterValues wprowadzono w programie PowerShell 3.0.
Aby uzyskać więcej informacji na temat tej zmiennej preferencji, zobacz about_Parameters_Default_Values.
$PSEmailServer
Określa domyślny serwer poczty e-mail używany do wysyłania wiadomości e-mail. Ta zmienna preferencji jest używana przez polecenia cmdlet wysyłające wiadomości e-mail, takie jak Send-MailMessage polecenia cmdlet.
$PSModuleAutoLoadingPreference
Włącza i wyłącza automatyczne importowanie modułów w sesji. Zmienna $PSModuleAutoLoadingPreference nie istnieje domyślnie. Domyślne zachowanie, gdy zmienna nie jest zdefiniowana, jest taka sama jak $PSModuleAutoLoadingPreference = 'All'.
Aby automatycznie zaimportować moduł, pobierz lub użyj polecenia zawartego w module.
Zmienna $PSModuleAutoLoadingPreference przyjmuje jedną z wartości wyliczenia PSModuleAutoLoadingPreference:
-
All: Moduły są importowane automatycznie podczas pierwszego użycia. -
ModuleQualified: Moduły są importowane automatycznie tylko wtedy, gdy użytkownik używa nazwy kwalifikowanej przez moduł polecenia w module. Jeśli na przykład użytkownik wpiszeMyModule\MyCommand, program PowerShell zaimportuje moduł MyModule. -
None: wyłącza automatyczne importowanie modułów. Aby zaimportować moduł, użyj polecenia cmdletImport-Module.
Aby uzyskać więcej informacji na temat automatycznego importowania modułów, zobacz about_Modules.
$PSNativeCommandArgumentPassing
Program PowerShell 7.3 zmienił sposób analizowania wiersza polecenia dla poleceń natywnych.
Nowa zmienna preferencji $PSNativeCommandArgumentPassing kontroluje to zachowanie.
Ostrożność
Nowe zachowanie to zmiana powodująca niezgodność z poprzedniego zachowania. Może to spowodować przerwanie skryptów i automatyzacji, które działają wokół różnych problemów podczas wywoływania aplikacji natywnych.
Zmienna automatyczna $PSNativeCommandArgumentPassing umożliwia wybranie zachowania w czasie wykonywania. Prawidłowe wartości to Legacy, Standardi Windows.
Legacy jest zachowaniem historycznym.
Zmienna $PSNativeCommandArgumentPassing jest definiowana domyślnie, ale wartość jest specyficzna dla platformy.
- W systemie Windows preferencja jest ustawiona na
Windows. - Na platformach innych niż Windows preferencja jest ustawiona na
Standard. - Jeśli usunięto zmienną
$PSNativeCommandArgumentPassing, program PowerShell używa zachowaniaStandard.
Zachowanie trybu Windows i Standard jest takie samo, z wyjątkiem tego, w trybie Windows, program PowerShell używa zachowania Legacy przekazywania argumentów podczas uruchamiania następujących plików.
cmd.execscript.exefind.exesqlcmd.exewscript.exe- Pliki kończące się na:
.bat.cmd.js.vbs.wsf
Jeśli $PSNativeCommandArgumentPassing jest ustawiona na Legacy lub Standard, analizator nie sprawdza tych plików. Aby zapoznać się z przykładami nowego zachowania, zobacz about_Parsing.
Program PowerShell 7.3 dodał również możliwość śledzenia powiązania parametrów dla poleceń natywnych. Aby uzyskać więcej informacji, zobacz Trace-Command.
$PSNativeCommandUseErrorActionPreference
Gdy $PSNativeCommandUseErrorActionPreference jest $true, natywne polecenia z kodami zakończenia niezerowymi wystawiają błędy zgodnie z $ErrorActionPreference.
Niektóre natywne polecenia, takie jak robocopy używać kodów zakończenia innych niż zero do reprezentowania informacji innych niż błędy. W takich przypadkach można tymczasowo wyłączyć zachowanie i zapobiec występowaniu błędów bez zera.
& {
# Disable $PSNativeCommandUseErrorActionPreference for this scriptblock
$PSNativeCommandUseErrorActionPreference = $false
robocopy.exe D:\reports\operational "\\reporting\ops" CY2022Q4.md
if ($LASTEXITCODE -gt 8) {
throw "robocopy failed with exit code $LASTEXITCODE"
}
}
W tym przykładzie zmienna $PSNativeCommandUseErrorActionPreference jest zmieniana wewnątrz bloku skryptowego. Zmiana jest lokalna dla bloku skryptów. Gdy skryptblock zakończy działanie, zmienna powróci do poprzedniej wartości.
$PSSessionApplicationName
Określa domyślną nazwę aplikacji dla zdalnego polecenia, które używa usług sieci Web do zarządzania (WS-Management) technologii. Aby uzyskać więcej informacji, zobacz About Windows Remote Management.
Domyślna nazwa aplikacji systemu to WSMAN, ale można użyć tej zmiennej preferencji, aby zmienić wartość domyślną.
Nazwa aplikacji jest ostatnim węzłem w identyfikatorze URI połączenia. Na przykład nazwa aplikacji w poniższym przykładowym identyfikatorze URI to WSMAN.
http://Server01:8080/WSMAN
Domyślna nazwa aplikacji jest używana, gdy zdalne polecenie nie określa identyfikatora URI połączenia ani nazwy aplikacji.
Usługa WinRM używa nazwy aplikacji do wybierania odbiornika do obsługi żądania połączenia. Wartość parametru powinna być zgodna z wartością URLPrefix właściwości odbiornika na komputerze zdalnym.
Aby zastąpić wartość domyślną systemu i wartość tej zmiennej, a następnie wybrać inną nazwę aplikacji dla określonej sesji, użyj identyfikatora ConnectionURI lub parametrów ApplicationName parametrów New-PSSession, Enter-PSSessionlub Invoke-Command poleceń cmdlet.
Zmienna preferencji $PSSessionApplicationName jest ustawiona na komputerze lokalnym, ale określa odbiornik na komputerze zdalnym. Jeśli określona nazwa aplikacji nie istnieje na komputerze zdalnym, polecenie ustanowienia sesji zakończy się niepowodzeniem.
$PSSessionConfigurationName
Określa domyślną konfigurację sesji używaną do tworzenia nowych sesji w bieżącej sesji.
Ta zmienna preferencji jest ustawiana na komputerze lokalnym, ale określa konfigurację sesji, która znajduje się na komputerze zdalnym.
Wartość zmiennej $PSSessionConfigurationName jest w pełni kwalifikowanym identyfikatorem URI zasobu.
Wartość domyślna http://schemas.microsoft.com/PowerShell/microsoft.PowerShell wskazuje konfigurację sesji Microsoft.PowerShell na komputerze zdalnym.
Jeśli określisz tylko nazwę konfiguracji, następujący identyfikator URI schematu jest wstępnie utworzony:
http://schemas.microsoft.com/PowerShell/
Można zastąpić wartość domyślną i wybrać inną konfigurację sesji dla określonej sesji przy użyciu parametru ConfigurationNameNew-PSSession, Enter-PSSessionlub Invoke-Command poleceń cmdlet.
Wartość tej zmiennej można zmienić w dowolnym momencie. Pamiętaj, że wybrana konfiguracja sesji musi istnieć na komputerze zdalnym. Jeśli tak nie jest, polecenie utworzenia sesji korzystającej z konfiguracji sesji zakończy się niepowodzeniem.
Ta zmienna preferencji nie określa, które konfiguracje sesji lokalnej są używane, gdy użytkownicy zdalni tworzą sesję łączącą się z tym komputerem. Można jednak użyć uprawnień do konfiguracji sesji lokalnej, aby określić, którzy użytkownicy mogą z nich korzystać.
$PSSessionOption
Ustanawia wartości domyślne dla zaawansowanych opcji użytkownika w sesji zdalnej. Te preferencje opcji zastępują wartości domyślne systemu dla opcji sesji.
Zmienna $PSSessionOption zawiera obiekt PSSessionOption. Aby uzyskać więcej informacji, zobacz System.Management.Automation.Remoting.PSSessionOption.
Każda właściwość obiektu reprezentuje opcję sesji. Na przykład właściwość NoCompression zamienia kompresję danych podczas sesji.
Domyślnie zmienna $PSSessionOption zawiera obiekt PSSessionOption z wartościami domyślnymi dla wszystkich opcji, jak pokazano poniżej.
MaximumConnectionRedirectionCount : 5
NoCompression : False
NoMachineProfile : False
ProxyAccessType : None
ProxyAuthentication : Negotiate
ProxyCredential :
SkipCACheck : False
SkipCNCheck : False
SkipRevocationCheck : False
OperationTimeout : 00:03:00
NoEncryption : False
UseUTF16 : False
IncludePortInSPN : False
OutputBufferingMode : None
Culture :
UICulture :
MaximumReceivedDataSizePerCommand :
MaximumReceivedObjectSize : 209715200
ApplicationArguments :
OpenTimeout : 00:03:00
CancelTimeout : 00:01:00
IdleTimeout : -00:00:00.0010000
Aby uzyskać opisy tych opcji i więcej informacji, zobacz New-PSSessionOption. Aby uzyskać więcej informacji na temat poleceń zdalnych i sesji, zobacz about_Remote i about_PSSessions.
Aby zmienić wartość zmiennej preferencji $PSSessionOption, użyj polecenia cmdlet New-PSSessionOption, aby utworzyć obiekt PSSessionOption z preferowanymi wartościami opcji. Zapisz dane wyjściowe w zmiennej o nazwie $PSSessionOption.
$PSSessionOption = New-PSSessionOption -NoCompression
Aby użyć zmiennej preferencji $PSSessionOption w każdej sesji programu PowerShell, dodaj polecenie New-PSSessionOption, które tworzy zmienną $PSSessionOption do profilu programu PowerShell. Aby uzyskać więcej informacji, zobacz about_Profiles.
Można ustawić opcje niestandardowe dla określonej sesji zdalnej. Ustawione opcje mają pierwszeństwo przed wartościami domyślnymi systemu i wartością zmiennej preferencji $PSSessionOption.
Aby ustawić opcje sesji niestandardowej, użyj polecenia cmdlet New-PSSessionOption, aby utworzyć obiekt PSSessionOption. Następnie użyj obiektu PSSessionOption jako wartości parametru SessionOption w poleceniach cmdlet, które tworzą sesję, taką jak New-PSSession, Enter-PSSessioni Invoke-Command.
$PSStyle
Od programu PowerShell 7.2 można teraz uzyskać dostęp do $PSStyle automatycznej zmiennej, aby wyświetlić i zmienić renderowanie danych wyjściowych ciągu ANSI.
$PSStyle jest wystąpieniem klasy PSStyle. Składowe tej klasy definiują ciągi zawierające sekwencje ucieczki ANSI, które kontrolują renderowanie tekstu w terminalu.
Podstawowe elementy członkowskie zwracają ciągi sekwencji ucieczki ANSI mapowane na ich nazwy. Wartości są ustawiane w celu zezwolenia na dostosowywanie. Nazwy właściwości ułatwiają tworzenie ciągów ozdobionych przy użyciu uzupełniania tabulacji. Na przykład:
"$($PSStyle.Background.BrightCyan)Power$($PSStyle.Underline)$($PSStyle.Bold)Shell$($PSStyle.Reset)"
Elementy członkowskie Background i Foreground mają również metodę FromRgb() określania koloru 24-bitowego.
Aby uzyskać więcej informacji na temat $PSStyle, zobacz about_ANSI_Terminals.
$Transcript
Używany przez Start-Transcript do określania nazwy i lokalizacji pliku transkrypcji. Jeśli nie określisz wartości parametru Path, Start-Transcript używa ścieżki w wartości zmiennej globalnej $Transcript. Jeśli ta zmienna nie została utworzona, Start-Transcript przechowuje transkrypcje w następującej lokalizacji przy użyciu nazwy domyślnej:
- W systemie Windows:
$HOME\Documents - W systemie Linux lub macOS:
$HOME
Domyślna nazwa pliku to: PowerShell_transcript.<computername>.<random>.<timestamp>.txt.
$VerbosePreference
Określa, jak program PowerShell reaguje na pełne komunikaty generowane przez skrypt, polecenie cmdlet lub dostawcę, takie jak komunikaty generowane przez polecenie cmdlet Write-Verbose. Pełne komunikaty opisują akcje wykonywane w celu wykonania polecenia.
Domyślnie pełne komunikaty nie są wyświetlane, ale można zmienić to zachowanie, zmieniając wartość $VerbosePreference.
Zmienna $VerbosePreference przyjmuje jedną z wartości wyliczenia ActionPreference: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspendlub Break.
Prawidłowe wartości są następujące:
- Break — wprowadź debuger podczas zapisywania w strumieniu pełnej.
- Zatrzymaj: wyświetla pełny komunikat i komunikat o błędzie, a następnie zatrzymuje wykonywanie.
- Inquire: Wyświetla pełny komunikat, a następnie wyświetla monit z pytaniem, czy chcesz kontynuować.
- Kontynuuj: wyświetla pełny komunikat, a następnie kontynuuje wykonywanie.
- SilentlyContinue: (Ustawienie domyślne) Nie wyświetla pełnej wiadomości. Kontynuuje wykonywanie.
Aby wyświetlić lub ukryć pełne komunikaty dla określonego polecenia, można użyć pełnej wspólnego parametru polecenia cmdlet. Aby uzyskać więcej informacji, zobacz about_CommonParameters.
Przykłady
W tych przykładach pokazano efekt różnych wartości $VerbosePreference i parametr Verbose, aby zastąpić wartość preferencji.
W tym przykładzie pokazano efekt wartości SilentlyContinue, która jest wartością domyślną. Polecenie używa parametru Message, ale nie zapisuje komunikatu w konsoli programu PowerShell.
Write-Verbose -Message "Verbose message test."
Gdy jest używany parametr verbose, komunikat jest zapisywany.
Write-Verbose -Message "Verbose message test." -Verbose
VERBOSE: Verbose message test.
W tym przykładzie pokazano efekt wartości Kontynuuj. Zmienna $VerbosePreference jest ustawiona na wartość Kontynuuj i jest wyświetlany komunikat.
$VerbosePreference = "Continue"
Write-Verbose -Message "Verbose message test."
VERBOSE: Verbose message test.
W tym przykładzie użyto parametru Verbose z wartością $false, która zastępuje wartość Kontynuuj. Komunikat nie jest wyświetlany.
Write-Verbose -Message "Verbose message test." -Verbose:$false
W tym przykładzie pokazano efekt wartości stop. Zmienna $VerbosePreference jest ustawiona na Zatrzymaj, a komunikat jest wyświetlany. Polecenie zostało zatrzymane.
$VerbosePreference = "Stop"
Write-Verbose -Message "Verbose message test."
VERBOSE: Verbose message test.
Write-Verbose : The running command stopped because the preference variable
"VerbosePreference" or common parameter is set to Stop: Verbose message test.
At line:1 char:1
+ Write-Verbose -Message "Verbose message test."
W tym przykładzie użyto parametru Verbose z wartością $false, która zastępuje wartość Stop. Komunikat nie jest wyświetlany.
Write-Verbose -Message "Verbose message test." -Verbose:$false
W tym przykładzie pokazano efekt wartości Inquire. Zmienna $VerbosePreference jest ustawiona na Inquire. Zostanie wyświetlony komunikat i zostanie wyświetlony monit o potwierdzenie.
$VerbosePreference = "Inquire"
Write-Verbose -Message "Verbose message test."
VERBOSE: Verbose message test.
Confirm
Continue with this operation?
[Y] Yes [A] Yes to All [H] Halt Command [?] Help (default is "Y"):
W tym przykładzie użyto parametru Verbose z wartością $false, która zastępuje wartość Inquire. Użytkownik nie jest monitowany i komunikat nie jest wyświetlany.
Write-Verbose -Message "Verbose message test." -Verbose:$false
$WarningPreference
Określa sposób reagowania programu PowerShell na komunikaty ostrzegawcze generowane przez skrypt, polecenie cmdlet lub dostawcę, takie jak komunikaty generowane przez polecenie cmdlet Write-Warning.
Domyślnie komunikaty ostrzegawcze są wyświetlane i wykonywanie jest kontynuowane, ale można zmienić to zachowanie, zmieniając wartość $WarningPreference.
Zmienna $WarningPreference przyjmuje jedną z wartości wyliczenia ActionPreference: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspendlub Break.
Prawidłowe wartości są następujące:
- Break — wprowadź debuger po zapisaniu komunikatu ostrzegawczego.
- Zatrzymaj: wyświetla komunikat ostrzegawczy i komunikat o błędzie, a następnie zatrzymuje wykonywanie.
- Inquire: Wyświetla komunikat ostrzegawczy, a następnie monituje o uprawnienie do kontynuowania.
- Kontynuuj: (ustawienie domyślne) Wyświetla komunikat ostrzegawczy, a następnie kontynuuje wykonywanie.
- SilentlyContinue: nie wyświetla komunikatu ostrzegawczego. Kontynuuje wykonywanie.
Możesz użyć WarningAction wspólnego parametru polecenia cmdlet, aby określić, jak program PowerShell reaguje na ostrzeżenia z określonego polecenia. Aby uzyskać więcej informacji, zobacz about_CommonParameters.
Przykłady
Te przykłady pokazują efekt różnych wartości $WarningPreference.
Parametr WarningAction zastępuje wartość preferencji.
W tym przykładzie pokazano efekt wartości domyślnej, Kontynuuj.
$m = "This action can delete data."
Write-Warning -Message $m
WARNING: This action can delete data.
W tym przykładzie użyto parametru WarningAction z wartością SilentlyContinue, aby pominąć ostrzeżenie. Komunikat nie jest wyświetlany.
$m = "This action can delete data."
Write-Warning -Message $m -WarningAction SilentlyContinue
W tym przykładzie zmienna $WarningPreference jest zmieniana na wartość SilentlyContinue. Komunikat nie jest wyświetlany.
$WarningPreference = "SilentlyContinue"
$m = "This action can delete data."
Write-Warning -Message $m
W tym przykładzie użyto parametru WarningAction, aby zatrzymać się po wygenerowaniu ostrzeżenia.
$m = "This action can delete data."
Write-Warning -Message $m -WarningAction Stop
WARNING: This action can delete data.
Write-Warning : The running command stopped because the preference variable
"WarningPreference" or common parameter is set to Stop:
This action can delete data.
At line:1 char:1
+ Write-Warning -Message $m -WarningAction Stop
W tym przykładzie zmienna $WarningPreference jest zmieniana na wartość Inquire. Użytkownik jest monitowany o potwierdzenie.
$WarningPreference = "Inquire"
$m = "This action can delete data."
Write-Warning -Message $m
WARNING: This action can delete data.
Confirm
Continue with this operation?
[Y] Yes [A] Yes to All [H] Halt Command [?] Help (default is "Y"):
W tym przykładzie użyto parametru WarningAction z wartością SilentlyContinue. Polecenie kontynuuje wykonywanie i nie jest wyświetlany żaden komunikat.
$m = "This action can delete data."
Write-Warning -Message $m -WarningAction SilentlyContinue
W tym przykładzie zmienia wartość $WarningPreference na Zatrzymaj.
$WarningPreference = "Stop"
$m = "This action can delete data."
Write-Warning -Message $m
WARNING: This action can delete data.
Write-Warning : The running command stopped because the preference variable
"WarningPreference" or common parameter is set to Stop:
This action can delete data.
At line:1 char:1
+ Write-Warning -Message $m
W tym przykładzie użyto WarningAction z wartością Inquire. Gdy wystąpi ostrzeżenie, użytkownik zostanie wyświetlony monit.
$m = "This action can delete data."
Write-Warning -Message $m -WarningAction Inquire
WARNING: This action can delete data.
Confirm
Continue with this operation?
[Y] Yes [A] Yes to All [H] Halt Command [?] Help (default is "Y"):
$WhatIfPreference
Określa, czy whatIf jest automatycznie włączone dla każdego polecenia, które go obsługuje. Po włączeniu WhatIf polecenie cmdlet zgłasza oczekiwany efekt polecenia, ale nie wykonuje polecenia.
Prawidłowe wartości są następujące:
- false (0, nie jest włączona): (ustawienie domyślne) WhatIf nie jest automatycznie włączone. Aby ją włączyć ręcznie, użyj parametru WhatIf polecenia cmdlet.
-
true (1, włączone): WhatIf jest automatycznie włączone na dowolnym z tych poleceń, które go obsługują. Użytkownicy mogą użyć parametru WhatIf z wartością False, aby wyłączyć go ręcznie, na przykład
-WhatIf:$false.
Przykłady
Te przykłady pokazują efekt różnych wartości $WhatIfPreference.
Pokazują one, jak użyć parametru WhatIf, aby zastąpić wartość preferencji dla określonego polecenia.
W tym przykładzie pokazano efekt zmiennej $WhatIfPreference ustawionej na wartość domyślną, false. Użyj Get-ChildItem, aby sprawdzić, czy plik istnieje.
Remove-Item usuwa plik. Po usunięciu pliku można zweryfikować usunięcie za pomocą Get-ChildItem.
Get-ChildItem -Path .\test.txt
Remove-Item -Path ./test.txt
Directory: C:\Test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 9/13/2019 10:53 10 test.txt
Get-ChildItem -Path .\test.txt
Get-ChildItem : Cannot find path 'C:\Test\test.txt' because it does not exist.
At line:1 char:1
+ Get-ChildItem -File test.txt
W tym przykładzie pokazano efekt użycia parametru WhatIf, gdy wartość $WhatIfPreference jest false.
Sprawdź, czy plik istnieje.
Get-ChildItem -Path .\test2.txt
Directory: C:\Test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2/28/2019 17:06 12 test2.txt
Użyj parametru WhatIf, aby określić wynik próby usunięcia pliku.
Remove-Item -Path .\test2.txt -WhatIf
What if: Performing the operation "Remove File" on target "C:\Test\test2.txt".
Sprawdź, czy plik nie został usunięty.
Get-ChildItem -Path .\test2.txt
Directory: C:\Test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2/28/2019 17:06 12 test2.txt
W tym przykładzie pokazano efekt zmiennej $WhatIfPreference ustawionej na wartość True. Gdy używasz Remove-Item do usunięcia pliku, zostanie wyświetlona ścieżka pliku, ale plik nie zostanie usunięty.
Spróbuj usunąć plik. Zostanie wyświetlony komunikat o tym, co się stanie, jeśli Remove-Item został uruchomiony, ale plik nie zostanie usunięty.
$WhatIfPreference = "True"
Remove-Item -Path .\test2.txt
What if: Performing the operation "Remove File" on target "C:\Test\test2.txt".
Użyj Get-ChildItem, aby sprawdzić, czy plik nie został usunięty.
Get-ChildItem -Path .\test2.txt
Directory: C:\Test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2/28/2019 17:06 12 test2.txt
W tym przykładzie pokazano, jak usunąć plik, gdy wartość $WhatIfPreference jest true. Używa parametru WhatIf z wartością $false. Użyj Get-ChildItem, aby sprawdzić, czy plik został usunięty.
Remove-Item -Path .\test2.txt -WhatIf:$false
Get-ChildItem -Path .\test2.txt
Get-ChildItem : Cannot find path 'C:\Test\test2.txt' because it does not exist.
At line:1 char:1
+ Get-ChildItem -Path .\test2.txt
Poniżej przedstawiono przykłady polecenia cmdlet Get-Process, które nie obsługuje WhatIf i Stop-Process, które obsługuje WhatIf. Wartość zmiennej $WhatIfPreference jest true.
Get-Process nie obsługuje WhatIf. Po wykonaniu polecenia zostanie wyświetlony proces Winword.
Get-Process -Name Winword
NPM(K) PM(M) WS(M) CPU(s) Id SI ProcessName
------ ----- ----- ------ -- -- -----------
130 119.84 173.38 8.39 15024 4 WINWORD
program Stop-Process obsługuje WhatIf. Proces Winword nie jest zatrzymany.
Stop-Process -Name Winword
What if: Performing the operation "Stop-Process" on target "WINWORD (15024)".
Zachowanie Stop-ProcessWhatIf można zastąpić za pomocą parametru WhatIf z wartością $false. Proces winwordu jest zatrzymany.
Stop-Process -Name Winword -WhatIf:$false
Aby sprawdzić, czy proces Winword został zatrzymany, użyj Get-Process.
Get-Process -Name Winword
Get-Process : Cannot find a process with the name "Winword".
Verify the process name and call the cmdlet again.
At line:1 char:1
+ Get-Process -Name Winword