about_Preference_Variables

Krótki opis

Zmienne, które dostosowują 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. W wielu przypadkach polecenia cmdlet mają parametry, których można użyć do zastąpienia zachowania preferencji dla określonego polecenia.

W poniższej tabeli wymieniono zmienne preferencji i ich wartości domyślne.

Zmienna Wartość domyślna
$ConfirmPreference High
$DebugPreference SilentlyContinue
$ErrorActionPreference Continue
$ErrorView ConciseView
$FormatEnumerationLimit 4
$InformationPreference SilentlyContinue
$LogCommandHealthEvent $False (niezalogowany)
$LogCommandLifecycleEvent $False (niezalogowany)
$LogEngineHealthEvent $True (zarejestrowane)
$LogEngineLifecycleEvent $True (zarejestrowane)
$LogProviderLifecycleEvent $True (zarejestrowane)
$LogProviderHealthEvent $True (zarejestrowane)
$MaximumHistoryCount 4096
$OFS Znak spacji (" ")
$OutputEncoding UTF8Encoding Obiektu
$ProgressPreference Continue
$PSDefaultParameterValues @{} (pusta tabela skrótów)
$PSEmailServer $Null (brak)
$PSModuleAutoLoadingPreference All
$PSSessionApplicationName 'wsman'
$PSSessionConfigurationName 'http://schemas.microsoft.com/powershell/Microsoft.PowerShell'
$PSSessionOption PSSessionOption Obiektu
$Transcript $Null (brak)
$VerbosePreference SilentlyContinue
$WarningPreference Continue
$WhatIfPreference $False

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

Uwaga

Zmiany zmiennej preferencji zaczynają obowiązywać tylko w skryptach i funkcjach, jeśli te skrypty lub funkcje są zdefiniowane w tym samym zakresie co zakres, w którym użyto preferencji. 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 zapewnić skuteczność zmiennych we wszystkich sesjach programu PowerShell, dodaj je do profilu programu PowerShell. Aby uzyskać więcej informacji, zobacz about_Profiles.

Praca zdalna

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 komputera $DebugPreference 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 ConfirmImpact wartości wyliczenia: Wysoki, Średni, Niski lub Brak.

Polecenia cmdlet i funkcje są przypisywane do ryzyka wysokiego, średniego lub niskiego. 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.

Jeśli wartość zmiennej $ConfirmPreference to None, program PowerShell nigdy nie wyświetli automatycznie monitu przed uruchomieniem polecenia cmdlet lub funkcji.

Aby zmienić zachowanie potwierdzające dla wszystkich poleceń cmdlet i funkcji w sesji, zmień $ConfirmPreference wartość zmiennej.

Aby zastąpić polecenie $ConfirmPreference dla jednego polecenia, użyj parametru Confirm polecenia cmdlet lub funkcji. Aby zażądać potwierdzenia, użyj polecenia -Confirm. Aby pominąć potwierdzenie, użyj polecenia -Confirm:$false.

Prawidłowe wartości elementu $ConfirmPreference:

  • Brak: program PowerShell nie wyświetla automatycznie monitu. 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 z niskim, średnim lub wysokim ryzykiem.
  • Średni: program PowerShell monituje o potwierdzenie przed uruchomieniem poleceń cmdlet lub funkcji o średnim lub wysokim ryzyku.
  • Wysoki: 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ą zmienić tego ustawienia.

Polecenia cmdlet i funkcje, które mogą stanowić zagrożenie dla systemu, mają parametr Confirm , którego można użyć do żądania lub pomijania potwierdzenia dla pojedynczego polecenia.

Ponieważ większość poleceń cmdlet i funkcji używa domyślnej wartości ryzyka, ConfirmImpact, średniej i wartości domyślnej $ConfirmPreference ma wartość High, automatyczne potwierdzanie rzadko występuje. Można jednak aktywować automatyczne potwierdzenie, zmieniając wartość na $ConfirmPreference Średnia lub Niska.

Przykłady

W tym przykładzie pokazano efekt $ConfirmPreference wartości domyślnej zmiennej High. Wartość Wysoka potwierdza tylko polecenia cmdlet i funkcje wysokiego ryzyka. Ponieważ większość poleceń cmdlet i funkcji jest średnim ryzykiem, nie są automatycznie potwierdzane i Remove-Item usuwają plik. Dodanie -Confirm do polecenia powoduje wyświetlenie monitu użytkownika o potwierdzenie.

$ConfirmPreference
High
Remove-Item -Path C:\temp1.txt

Użyj polecenia -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 na $ConfirmPreference Średni. Ponieważ większość poleceń cmdlet i funkcji jest średnim ryzykiem, są automatycznie potwierdzane. Aby pominąć monit o potwierdzenie dla jednego 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ę Write-Debug albo za pomocą polecenia w wierszu polecenia.

Zmienna $DebugPreference przyjmuje jedną z wartości ActionPreference wartości wyliczenia: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend lub 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ć polecenia debugowania wspólnego parametru polecenia . Aby uzyskać więcej informacji, zobacz about_CommonParameters.

Prawidłowe wartości są następujące:

  • Zatrzymaj: wyświetla komunikat debugowania i zatrzymuje wykonywanie. Zapisuje błąd w konsoli programu .
  • Zapytanie: wyświetla komunikat debugowania i pyta, czy chcesz kontynuować. Dodanie wspólnego parametru debugowania do polecenia, gdy polecenie jest skonfigurowane do generowania komunikatu debugowania, zmienia wartość zmiennej $DebugPreference na Inquire.
  • Kontynuuj: wyświetla komunikat debugowania i kontynuuje wykonywanie.
  • SilentlyContinue: (Ustawienie domyślne) Brak efektu. Komunikat debugowania nie jest wyświetlany i wykonywanie będzie kontynuowane bez przerwy.

Przykłady

W poniższych przykładach pokazano efekt zmiany wartości $DebugPreference po Write-Debug wprowadzeniu polecenia w wierszu polecenia. Zmiana ma wpływ na wszystkie komunikaty debugowania, w tym komunikaty generowane przez polecenia cmdlet i skrypty. W przykładach pokazano parametr debugowania , który wyświetla lub ukrywa komunikaty debugowania związane z pojedynczym poleceniem.

W tym przykładzie pokazano efekt $DebugPreference wartości domyślnej zmiennej SilentlyContinue. Domyślnie Write-Debug komunikat debugowania polecenia cmdlet nie jest wyświetlany i przetwarzanie jest kontynuowane. Gdy jest używany parametr debugowania , 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 kontynuuje przetwarzanie.

$DebugPreference = "Continue"
Write-Debug -Message "Hello, World"
DEBUG: Hello, World

W tym przykładzie użyto parametru Debug 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 $DebugPreference ustawienia wartości Zatrzymaj . 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 Debug 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 $DebugPreference ustawiania wartości 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 Debug z wartością $false , aby pominąć komunikat dla pojedynczego polecenia. Komunikat debugowania nie jest wyświetlany i przetwarzanie jest kontynuowane.

Write-Debug -Message "Hello, World" -Debug:$false

$ErrorActionPreference

Określa, jak program PowerShell reaguje na błąd niepowodujący zakończenia, czyli błąd, który nie zatrzymuje przetwarzania polecenia cmdlet. Na przykład w wierszu polecenia lub w skrycie, poleceniu cmdlet lub dostawcy, takich jak błędy wygenerowane przez Write-Error polecenie cmdlet.

Zmienna $ErrorActionPreference przyjmuje jedną z wartości ActionPreference wartości wyliczenia: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend lub Break.

Aby zastąpić preferencje określonego polecenia, można użyć wspólnego parametru ErrorAction polecenia cmdlet.

Prawidłowe wartości są następujące:

  • Przerwanie — wprowadź debuger w przypadku wystąpienia błędu lub zgłoszenia 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ść Ignore jest przeznaczona do użycia poszczególnych poleceń, a nie do użycia jako zapisanych preferencji. Ignoruj nie jest prawidłową wartością zmiennej $ErrorActionPreference .
  • Zapytanie: wyświetla komunikat o błędzie i pyta, czy chcesz kontynuować.
  • SilentlyContinue: Brak efektu. Komunikat o błędzie nie jest wyświetlany i wykonywanie będzie kontynuowane bez przerwy.
  • Zatrzymaj: wyświetla komunikat o błędzie i zatrzymuje wykonywanie. Oprócz wygenerowanego błędu wartość Zatrzymaj generuje obiekt ActionPreferenceStopException do strumienia błędów.
  • Wstrzymywanie: automatycznie zawiesza zadanie przepływu pracy, aby umożliwić dalsze badanie. Po zbadaniu można wznowić przepływ pracy. Wartość Suspend jest przeznaczona do użycia poszczególnych poleceń, a nie do użycia jako zapisanych preferencji. Wstrzymywanie nie jest prawidłową wartością zmiennej $ErrorActionPreference .

$ErrorActionPreference parametr ErrorAction nie wpływa na sposób, w jaki program PowerShell reaguje na błędy kończące przetwarzanie poleceń cmdlet. Aby uzyskać więcej informacji na temat wspólnego parametru ErrorAction , zobacz about_CommonParameters.

Przykłady

W tych przykładach pokazano efekt różnych wartości zmiennej $ErrorActionPreference . Parametr ErrorAction służy do zastępowania $ErrorActionPreference wartości.

W tym przykładzie jest wyświetlana wartość domyślna $ErrorActionPreference Kontynuuj. Zostanie wygenerowany błąd niepowodujący zakończenia. Zostanie wyświetlony komunikat i 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 pokazano wartość domyślną $ErrorActionPreference , Inquire. 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 pokazano $ErrorActionPreference zestaw na wartość 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 pokazano $ErrorActionPreference ustawienie Zatrzymaj. Pokazuje on również dodatkowy obiekt wygenerowany dla zmiennej $Error .

# Change the ErrorActionPreference to 'Stop'
$ErrorActionPreference = 'Stop'
# Error message is 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 ErrorView wartości wyliczenia: NormalView, CategoryView lub 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. Jeśli w programie PowerShell 7.2 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 wielowierszowy 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ć pod adresem $Host.PrivateData.ErrorAccentColor. Użyj Get-Error polecenia cmdlet, aby uzyskać szczegółowy widok w pełni kwalifikowanego błędu, w tym wyjątków wewnętrznych.

    Element 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 klasie CategoryView, zobacz ErrorCategoryInfo , klasa.

Przykłady

W tym przykładzie pokazano, jak błąd pojawia się, gdy wartość jest wartością $ErrorView domyślną ConciseView. Get-ChildItem służy do znajdowania nieistniejącego katalogu.

Get-ChildItem -path 'C:\NoRealDirectory'
Get-ChildItem: Cannot find path 'C:\NoRealDirectory' because it does not exist.

W tym przykładzie pokazano, jak błąd pojawia się, gdy wartość jest wartością $ErrorView domyślną ConciseView. Script.ps1 polecenie jest uruchamiane i zgłasza błąd z Get-Item instrukcji .

./Script.ps1
Get-Item: C:\Script.ps1
Line |
  11 | Get-Item -Path .\stuff
     | ^ Cannot find path 'C:\demo\stuff' because it does not exist.

W tym przykładzie pokazano, jak błąd pojawia się po zmianie wartości $ErrorView elementu na NormalView. Get-ChildItem służy do znajdowania nieistniejącego pliku.

Get-ChildItem -Path C:\nofile.txt
Get-ChildItem : Cannot find path 'C:\nofile.txt' because it does not exist.
At line:1 char:1
+ Get-ChildItem -Path C:\nofile.txt

W tym przykładzie pokazano, jak ten sam błąd pojawia się po zmianie wartości $ErrorView elementu 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ść parametru $ErrorView wpływa tylko na wyświetlanie błędu. Nie zmienia struktury obiektu błędu przechowywanego w zmiennej automatycznej $Error . Aby uzyskać informacje o zmiennej automatycznej $Error , zobacz about_automatic_variables.

Następujące polecenie pobiera obiekt ErrorRecord skojarzony z najnowszym błędem w tablicy błędów, elem. 0 i formatuje wszystkie właściwości obiektu błędu 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ę wyliczeń elementów uwzględnionych w wyświetlaczu. Ta zmienna nie ma wpływu na obiekty bazowe, tylko na wyświetlanie. Jeśli wartość parametru $FormatEnumerationLimit jest mniejsza niż liczba wyliczeń elementów, program PowerShell dodaje wielokropek (...), aby wskazać, że elementy nie są wyświetlane.

Prawidłowe wartości: Liczby całkowite (Int32)

Wartość domyślna: 4

Przykłady

W tym przykładzie pokazano, jak za pomocą zmiennej $FormatEnumerationLimit poprawić wyświetlanie wyliczeń elementów.

Polecenie w tym przykładzie generuje tabelę zawierającą listę wszystkich usług uruchomionych na komputerze w dwóch grupach: jednej dla uruchamiania usług i jednej 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 Group-Object polecenia cmdlet, które grupuje wyniki według stanu usługi.

Wynikiem jest tabela zawierająca stan w kolumnie Nazwa oraz procesy w kolumnie Grupa . Aby zmienić etykiety kolumn, użyj tabeli skrótów, zobacz about_Hash_Tables. Aby uzyskać więcej informacji, zobacz przykłady w temacie Format-Table.

Znajdź bieżącą wartość .$FormatEnumerationLimit

$FormatEnumerationLimit
4

Wyświetl listę wszystkich usług pogrupowanych według stanu. W kolumnie Grupuj dla każdego stanu znajduje się maksymalnie cztery usługi, 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ę wymienionych elementów, zwiększ wartość $FormatEnumerationLimit do 1000. Użyj polecenia 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 polecenia Format-Table z parametrem Zawijanie , 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 ustawienie 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 ActionPreference wartości wyliczenia: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend lub Break.

Prawidłowe wartości są następujące:

  • Zatrzymaj: zatrzymuje polecenie lub skrypt w wystąpieniu Write-Information polecenia.
  • Zapytanie: wyświetla komunikat informacyjny określony w Write-Information poleceniu, a następnie pyta, czy chcesz kontynuować.
  • Kontynuuj: wyświetla komunikat informacyjny i kontynuuje działanie.
  • Wstrzymanie jest dostępne tylko dla przepływów pracy, które nie są obsługiwane w programie PowerShell 6 i poza nią.
  • SilentlyContinue: (Ustawienie domyślne) Brak efektu. Komunikaty informacyjne nie są wyświetlane, a skrypt będzie kontynuowany bez przerwy.

$Dziennik*Zdarzenie

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 Dziennika*Zdarzenia , aby dostosować dziennik, na przykład rejestrowanie zdarzeń dotyczących poleceń.

Zmienne preferencji Dziennika*Zdarzenia są następujące:

  • $LogCommandHealthEvent: rejestruje błędy i wyjątki podczas inicjowania i przetwarzania 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 (rejestrowane).
  • $LogEngineLifecycleEvent: rejestruje otwieranie i zamykanie sesji. Wartość domyślna to $true (rejestrowane).
  • $LogProviderHealthEvent: Rejestruje błędy dostawcy, takie jak błędy odczytu i zapisu, błędy wyszukiwania i błędy wywołania. Wartość domyślna to $true (rejestrowane).
  • $LogProviderLifecycleEvent: Rejestruje dodawanie i usuwanie dostawców programu PowerShell. Wartość domyślna to $true (rejestrowane). Aby uzyskać informacje o dostawcach programu PowerShell, zobacz about_Providers.

Aby włączyć zdarzenie Dziennika*, wpisz zmienną z wartością $true, na przykład:

$LogCommandLifeCycleEvent = $true

Aby wyłączyć typ zdarzenia, wpisz zmienną o wartości $false, na przykład:

$LogCommandLifeCycleEvent = $false

Włączone zdarzenia 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)

Ustawienie domyślne: 4096

Aby określić liczbę poleceń zapisanych w historii poleceń, wpisz:

(Get-History).Count

Aby wyświetlić polecenia zapisane w historii sesji, użyj Get-History polecenia cmdlet . Aby uzyskać więcej informacji, zobacz about_History.

$OFS

Separator pola wyjściowego (OFS) określa znak, który oddziela elementy tablicy konwertowanej na ciąg.

Prawidłowe wartości: dowolny ciąg.

Ustawienie 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. Możesz zmienić wartość $OFS w sesji, wpisując $OFS="<value>".

Uwaga

Jeśli oczekujesz wartości domyślnej spacji (" ") w danych wyjściowych skryptu, modułu lub konfiguracji, zachowaj ostrożność, że $OFS wartość domyślna nie została zmieniona w innym miejscu w kodzie.

Przykłady

W tym przykładzie pokazano, że spacja jest używana 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 wysyłania tekstu do innych aplikacji.

Jeśli na przykład aplikacja zwraca ciągi Unicode do programu PowerShell, może być konieczne zmianę wartości na UnicodeEncoding w celu poprawnego wysłania znaków.

Prawidłowe wartości są następujące: Obiekty pochodzące z klasy kodowania, takie jak ASCIIEncoding, UTF7Encoding, UTF8Encoding, UTF32Encoding i UnicodeEncoding.

Ustawienie domyślne: obiekt UTF8Encoding .

Przykłady

W tym przykładzie pokazano, jak sprawić, aby polecenie windowsfindstr.exe działało w programie PowerShell na komputerze zlokalizowanym dla języka używającego znaków Unicode, takich jak chiński.

Pierwsze polecenie znajduje wartość .$OutputEncoding Ponieważ wartość jest obiektem kodowania, wyświetla tylko jego właściwość EncodingName .

$OutputEncoding.EncodingName

W tym przykładzie polecenie findstr.exe służy do wyszukiwania dwóch chińskich znaków znajdujących się w Test.txt pliku. Gdy to poleceniefindstr.exe jest uruchamiane w wierszu polecenia systemu Windows (cmd.exe), findstr.exe znajduje znaki w pliku tekstowym. Jednak po uruchomieniu tego samego polecenia findstr.exe w programie PowerShell znaki nie są znalezione, ponieważ program PowerShell wysyła je do findstr.exe w tekście ASCII, a nie w tekście Unicode.

findstr <Unicode-characters>

Aby polecenie działało w programie PowerShell, ustaw wartość na wartość $OutputEncoding właściwości OutputEncoding konsoli, która jest oparta na ustawieniach regionalnych wybranych dla systemu Windows. Ponieważ OutputEncoding jest właściwością statyczną konsoli, użyj dwukropków (::) w poleceniu .

$OutputEncoding = [console]::OutputEncoding
$OutputEncoding.EncodingName
OEM United States

Po zmianie kodowania polecenie findstr.exe znajduje znaki Unicode.

findstr <Unicode-characters>
test.txt:         <Unicode-characters>

$ProgressPreference

Określa, jak program PowerShell reaguje na aktualizacje postępu generowane przez skrypt, polecenie cmdlet lub dostawcę, takie jak paski postępu generowane przez polecenie cmdlet Write-Progress . Polecenie Write-Progress cmdlet tworzy paski postępu, które pokazują stan polecenia.

Zmienna $ProgressPreference przyjmuje jedną z wartości ActionPreference wartości wyliczenia: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend lub Break.

Prawidłowe wartości są następujące:

  • Zatrzymaj: nie wyświetla paska postępu. Zamiast tego wyświetla komunikat o błędzie i zatrzymuje wykonywanie.
  • Inquire: nie wyświetla paska postępu. Monituje o zezwolenie na kontynuowanie. Jeśli odpowiesz za pomocą polecenia Y lub A, 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ść to tabela skrótu $PSDefaultParameterValues , w której klucz składa się z nazwy polecenia cmdlet i nazwy parametru rozdzielanego 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 polecenie cmdlet Send-MailMessage .

$PSModuleAutoloadingPreference

Włącza i wyłącza automatyczne importowanie modułów w sesji. Wszystko jest wartością domyślną. Aby zaimportować moduł, pobierz lub użyj dowolnego polecenia w module. Użyj na przykład nazwy Get-Command. Zmienna $PSModuleAutoloadingPreference nie istnieje domyślnie. Domyślne zachowanie, gdy zmienna nie jest zdefiniowana, jest taka sama jak $PSModuleAutoloadingPreference = 'All'.

Niezależnie od wartości zmiennej można zaimportować moduł za pomocą modułu Import-Module .

Zmienna $PSModuleAutoloadingPreference przyjmuje jedną z wartości PSModuleAutoLoadingPreference wartości wyliczenia: None, ModuleQualified lub All.

Prawidłowe wartości:

  • Wszystkie: moduły są importowane automatycznie podczas pierwszego użycia.
  • ModuleQualified: Moduły są importowane automatycznie tylko wtedy, gdy użytkownik używa kwalifikowanej przez moduł nazwy polecenia w module. Jeśli na przykład użytkownik wpisze MyModule\MyCommandciąg , program PowerShell zaimportuje moduł MyModule .
  • Brak: automatyczne importowanie modułów jest wyłączone w sesji. Aby zaimportować moduł, użyj Import-Module polecenia cmdlet .

Aby uzyskać więcej informacji na temat automatycznego importowania modułów, zobacz about_Modules.

$PSSessionApplicationName

Określa domyślną nazwę aplikacji dla zdalnego polecenia, które używa technologii Web Services for Management (WS-Management). Aby uzyskać więcej informacji, zobacz About Windows Remote Management (Informacje o zdalnym zarządzaniu systemem Windows).

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 w celu obsługi żądania połączenia. Wartość parametru powinna być zgodna z wartością właściwości URLPrefix 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 parametrów ConnectionURI lub ApplicationName parametrów New-PSSession, Enter-PSSession lub Invoke-Command .

Zmienna $PSSessionApplicationName preferencji 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, która jest używana dla sesji PSSessions utworzone 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ść http://schemas.microsoft.com/PowerShell/microsoft.PowerShell domyślna wskazuje konfigurację sesji Microsoft.PowerShell na komputerze zdalnym.

Jeśli określisz tylko nazwę konfiguracji, identyfikator URI schematu zostanie wstępnie utworzony:

http://schemas.microsoft.com/PowerShell/

Możesz zastąpić wartość domyślną i wybrać inną konfigurację sesji dla określonej sesji przy użyciu parametru New-PSSessionConfigurationName polecenia cmdlet , Enter-PSSessionlub Invoke-Command .

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ę, która łączy się z tym komputerem. Można jednak użyć uprawnień do konfiguracji sesji lokalnej, aby określić, którzy użytkownicy mogą ich używać.

$PSSessionOption

Ustanawia wartości domyślne dla zaawansowanych opcji użytkownika w sesji zdalnej. Te preferencje opcji zastępują domyślne wartości systemowe 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 zdalnych poleceń i sesji, zobacz about_Remote i about_PSSessions.

Aby zmienić wartość zmiennej $PSSessionOption preferencji, użyj New-PSSessionOption polecenia cmdlet , 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 $PSSessionOption preferencji w każdej sesji programu PowerShell, dodaj New-PSSessionOption polecenie, 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 $PSSessionOption preferencji.

Aby ustawić niestandardowe opcje sesji, użyj New-PSSessionOption polecenia cmdlet , 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.

$Transcript

Start-Transcript Służy do określania nazwy i lokalizacji pliku transkrypcji. Jeśli nie określisz wartości parametru Path , Start-Transcript użyje ścieżki w wartości zmiennej globalnej $Transcript . Jeśli ta zmienna nie została utworzona, Start-Transcript zapisuje transkrypcje w $Home\My Documents katalogu jako \PowerShell_transcript.<time-stamp>.txt pliki.

$VerbosePreference

Określa sposób, w jaki 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 ActionPreference wartości wyliczenia: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend lub Break.

Prawidłowe wartości są następujące:

  • Zatrzymaj: wyświetla pełny komunikat i komunikat o błędzie, a następnie zatrzymuje wykonywanie.
  • Zapytanie: 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łnego parametru polecenia cmdlet. Aby uzyskać więcej informacji, zobacz about_CommonParameters.

Przykłady

W tych przykładach pokazano efekt różnych wartości parametru $VerbosePreference i 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 jest ustawiona $VerbosePreference na Kontynuuj , a komunikat jest wyświetlany.

$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 jest ustawiona $VerbosePreference 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 jest ustawiona $VerbosePreference 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, w jaki program PowerShell reaguje 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 ActionPreference wartości wyliczenia: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend lub Break.

Prawidłowe wartości są następujące:

  • Zatrzymaj: wyświetla komunikat ostrzegawczy i komunikat o błędzie, a następnie zatrzymuje wykonywanie.
  • Pytanie: wyświetla komunikat ostrzegawczy, a następnie monituje o pozwolenie na kontynuowanie.
  • 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ć wspólnego parametru WarningAction 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

W tych przykładach pokazano 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

Ten przykład zmienia zmienną $WarningPreference 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

Ten przykład zmienia wartość na $WarningPreference 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 funkcji WarningAction z wartością Inquire . Użytkownik jest monitowany o wyświetlenie ostrzeżenia.

$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 funkcja WhatIf jest automatycznie włączona dla każdego obsługiwanego polecenia. Po włączeniu funkcji WhatIf polecenie cmdlet zgłasza oczekiwany efekt polecenia, ale nie wykonuje polecenia.

Prawidłowe wartości są następujące:

  • Fałsz (0, nie włączono): (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): funkcja WhatIf jest automatycznie włączona dla dowolnego polecenia, które go obsługuje. Użytkownicy mogą użyć parametru WhatIf z wartością False , aby wyłączyć go ręcznie, na przykład -WhatIf:$false.

Przykłady

W tych przykładach pokazano efekt różnych wartości .$WhatIfPreference Pokazują, 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 polecenia Get-ChildItem , aby sprawdzić, czy plik istnieje. Remove-Item usuwa plik. Po usunięciu pliku można zweryfikować usunięcie za pomocą polecenia 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ść ma wartość $WhatIfPreference 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 polecenia 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 w przypadku Remove-Item uruchomienia, 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 polecenia 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ść ma wartość $WhatIfPreference True. Używa parametru WhatIf z wartością $false. Użyj polecenia 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 Get-Process polecenia cmdlet, które nie obsługuje funkcji WhatIf i Stop-Process które obsługuje usługę WhatIf. Wartość $WhatIfPreference zmiennej to True.

Get-Process program nie obsługuje funkcji 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

Stop-Process program obsługuje program WhatIf. Proces Winword nie został zatrzymany.

Stop-Process -Name Winword
What if: Performing the operation "Stop-Process" on target "WINWORD (15024)".

Zachowanie WhatIf można zastąpić przy użyciu parametru Stop-Process WhatIf z wartością $false. Proces Winword został zatrzymany.

Stop-Process -Name Winword -WhatIf:$false

Aby sprawdzić, czy proces Winword został zatrzymany, użyj polecenia 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

Zobacz też