Sdílet prostřednictvím


about_Preference_Variables

Krátký popis

Proměnné, které přizpůsobí chování PowerShellu.

Dlouhý popis

PowerShell obsahuje sadu proměnných, které umožňují přizpůsobit jeho chování. Tyto proměnné předvoleb fungují podobně jako možnosti v systémech založených na grafickém uživatelském rozhraní.

Proměnné předvoleb ovlivňují provozní prostředí PowerShellu a všechny příkazy spuštěné v prostředí. Některé rutiny mají parametry, které umožňují přepsat chování předvoleb pro konkrétní příkaz.

Následující tabulka uvádí proměnné předvoleb a jejich výchozí hodnoty.

Proměnná Výchozí hodnota
$ConfirmPreference High
$DebugPreference SilentlyContinue
$ErrorActionPreference Continue
$ErrorView ConciseView
$FormatEnumerationLimit 4
$InformationPreference SilentlyContinue
$LogCommandHealthEvent $false (nezaprotokolováno)
$LogCommandLifecycleEvent $false (nezaprotokolováno)
$LogEngineHealthEvent $true (zaprotokolováno)
$LogEngineLifecycleEvent $true (zaprotokolováno)
$LogProviderHealthEvent $true (zaprotokolováno)
$LogProviderLifecycleEvent $true (zaprotokolováno)
$MaximumHistoryCount 4096
$OFS Znak mezery (" ")
$OutputEncoding objekt UTF8Encoding
$ProgressPreference Continue
$PSDefaultParameterValues @{} (prázdná tabulka hash)
$PSEmailServer $null (žádný)
$PSModuleAutoLoadingPreference All
$PSNativeCommandArgumentPassing Windows ve Windows, Standard v jiných systémech než Windows
$PSNativeCommandUseErrorActionPreference $false
$PSSessionApplicationName 'wsman'
$PSSessionConfigurationName 'http://schemas.microsoft.com/powershell/Microsoft.PowerShell'
$PSSessionOption objekt PSSessionOption
$PSStyle objekt PSStyle
$Transcript $null (žádný)
$VerbosePreference SilentlyContinue
$WarningPreference Continue
$WhatIfPreference $false

PowerShell obsahuje následující proměnné prostředí, které ukládají uživatelské předvolby. Další informace o těchto proměnných prostředí najdete v tématu about_Environment_Variables.

  • $Env:PSExecutionPolicyPreference
  • $Env:PSModulePath

Poznámka

Změny proměnných předvoleb platí pouze v rozsahu, který jsou provedeny, a všechny podřízené obory. Můžete například omezit účinky změny proměnné předvoleb na jednu funkci nebo skript. Další informace najdete v tématu about_Scopes.

Práce s proměnnými předvoleb

Tento dokument popisuje jednotlivé proměnné předvoleb.

Pokud chcete zobrazit aktuální hodnotu konkrétní proměnné předvolby, zadejte název proměnné. Například následující příkaz zobrazí hodnotu proměnné $ConfirmPreference.

 $ConfirmPreference
High

Pokud chcete změnit hodnotu proměnné, použijte příkaz přiřazení. Například následující příkaz změní hodnotu parametru $ConfirmPreference na Medium.

$ConfirmPreference = "Medium"

Hodnoty, které jste nastavili, jsou specifické pro aktuální relaci PowerShellu. Pokud chcete, aby proměnné byly efektivní ve všech relacích PowerShellu, přidejte je do profilu PowerShellu. Další informace najdete v tématu about_Profiles.

Práce vzdáleně

Když spouštíte příkazy na vzdáleném počítači, vzdálené příkazy podléhají jenom předvolbám nastaveným v klientovi PowerShellu vzdáleného počítače. Když například spustíte vzdálený příkaz, hodnota proměnné $DebugPreference vzdáleného počítače určuje, jak PowerShell reaguje na ladicí zprávy.

Další informace o vzdálenýchpříkazch about_Remotech

$ConfirmPreference

Určuje, jestli vás PowerShell před spuštěním rutiny nebo funkce automaticky vyzve k potvrzení.

Proměnná $ConfirmPreference přebírá jednu z hodnot výčtu ConfirmImpact: Vysoký, Střední, Nízkánebo None.

Rutiny a funkce mají přiřazené riziko vysoké, střednínebo nízké. Pokud je hodnota proměnné $ConfirmPreference menší nebo rovna riziku přiřazeného rutině nebo funkci, PowerShell vás před spuštěním rutiny nebo funkce automaticky vyzve k potvrzení. Další informace o přiřazování rizika rutinám nebo funkcím najdete v tématu about_Functions_CmdletBindingAttribute.

Pokud je hodnota proměnné $ConfirmPreferenceNone, PowerShell vás před spuštěním rutiny nebo funkce nikdy automaticky vyzve.

Pokud chcete změnit potvrzovací chování pro všechny rutiny a funkce v relaci, změňte hodnotu proměnné $ConfirmPreference.

Pokud chcete přepsat $ConfirmPreference pro jeden příkaz, použijte parametr Potvrdit pomocí rutiny nebo funkce. Pokud chcete požádat o potvrzení, použijte -Confirm. K potlačení potvrzení použijte -Confirm:$false.

Platné hodnoty $ConfirmPreference:

  • Žádné: PowerShell se automaticky nezobrazí. Pokud chcete požádat o potvrzení konkrétního příkazu, použijte parametr Potvrdit rutiny nebo funkce.
  • Nízká: PowerShell před spuštěním rutin nebo funkcí s nízkým, středním nebo vysokým rizikem zobrazí výzvu k potvrzení.
  • střední: PowerShell před spuštěním rutin nebo funkcí se středním nebo vysokým rizikem vyzve k potvrzení.
  • High: PowerShell před spuštěním rutin nebo funkcí s vysokým rizikem zobrazí výzvu k potvrzení.

Podrobné vysvětlení

PowerShell vás může před provedením akce automaticky vyzvat k potvrzení. Například když rutina nebo funkce významně ovlivní systém, aby odstranil data nebo používal značné množství systémových prostředků.

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"):

Odhad rizika je atributem rutiny nebo funkce známé jako její ConfirmImpact. Uživatelé ho nemůžou změnit.

Rutiny a funkce, které mohou představovat riziko pro systém, mají Potvrdit parametr, který můžete použít k vyžádání nebo potlačení potvrzení pro jeden příkaz.

Většina rutin a funkcí uchovává výchozí hodnotu Střední pro ConfirmImpact. $ConfirmPreference je ve výchozím nastavení nastavená na High. Proto je vzácné, že příkazy automaticky zobrazí výzvu k potvrzení, když uživatelé nezadají parametr Potvrdit. Pokud chcete rozšířit zobrazení výzvy k automatickému potvrzení na další rutiny a funkce, nastavte hodnotu $ConfirmPreference na Střední nebo Nízké.

Příklady

Tento příklad ukazuje účinek výchozí hodnoty proměnné $ConfirmPreferenceHigh. Hodnota High potvrzuje pouze vysoce rizikové rutiny a funkce. Vzhledem k tomu, že většina rutin a funkcí je střední riziko, nejsou automaticky potvrzeny a Remove-Item soubor odstraní. Přidání -Confirm do příkazového řádku zobrazí uživateli potvrzení.

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

K potvrzení použijte -Confirm.

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"):

Následující příklad ukazuje účinek změny hodnoty $ConfirmPreference na Medium. Vzhledem k tomu, že většina rutin a funkce představují střední riziko, jsou automaticky potvrzeny. Chcete-li potlačit potvrzovací výzvu pro jeden příkaz, použijte parametr Potvrdit s hodnotou $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

Určuje, jak PowerShell reaguje na zprávy ladění generované skriptem, rutinou nebo poskytovatelem nebo příkazem Write-Debug na příkazovém řádku.

Proměnná $DebugPreference přebírá jednu z hodnot výčtu ActionPreference: SilentlyContinue , Zastavit, Pokračovat, Inquire, Ignore, Suspendnebo Break.

Některé rutiny zobrazují zprávy ladění, které jsou obvykle technické zprávy navržené pro programátory a odborníky na technickou podporu. Ve výchozím nastavení nejsou zprávy ladění zobrazeny, ale můžete zobrazit ladicí zprávy změnou hodnoty $DebugPreference.

K zobrazení nebo skrytí zpráv ladění pro konkrétní příkaz můžete použít ladění běžný parametr rutiny. Další informace najdete v tématu about_CommonParameters.

Platné hodnoty jsou následující:

  • přerušení – zadejte ladicí program, pokud dojde k chybě nebo při vyvolání výjimky.
  • Zastavit: Zobrazí zprávu ladění a ukončí provádění. Zapíše do konzoly chybu.
  • Inquire: Zobrazí zprávu ladění a zeptá se, jestli chcete pokračovat.
  • Pokračovat: Zobrazí zprávu ladění a pokračuje v provádění.
  • bezobslužné: (Výchozí) Žádný efekt. Zpráva ladění se nezobrazí a provádění pokračuje bez přerušení.

Přidání Ladění společný parametr do příkazu, když je příkaz nakonfigurován tak, aby vygeneroval zprávu ladění, změní hodnotu proměnné $DebugPreference na Continue.

Příklady

Následující příklady ukazují vliv změny hodnot $DebugPreference při zadání příkazu Write-Debug na příkazový řádek. Tato změna má vliv na všechny zprávy ladění, včetně zpráv generovaných rutinami a skripty. Příklady ukazují parametr Ladění, který zobrazuje nebo skryje zprávy ladění související s jedním příkazem.

Tento příklad ukazuje účinek výchozí hodnoty proměnné $DebugPreferenceSilentlyContinue. Ve výchozím nastavení se zpráva ladění Write-Debug rutiny nezobrazí a zpracování pokračuje. Když se použije parametr Debug, přepíše předvolbu pro jeden příkaz. Zobrazí se zpráva ladění.

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

Tento příklad ukazuje efekt $DebugPreference s hodnotou Continue. Zobrazí se zpráva ladění a příkaz bude dál zpracovávat.

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

Tento příklad používá parametr Debug s hodnotou $false k potlačení zprávy pro jeden příkaz. Zpráva ladění se nezobrazí.

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

Tento příklad ukazuje účinek nastavení $DebugPreference na hodnotu Zastavit. Zobrazí se zpráva ladění a příkaz se zastaví.

$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"

Tento příklad používá parametr Debug s hodnotou $false k potlačení zprávy pro jeden příkaz. Zpráva ladění se nezobrazí a zpracování se nezastaví.

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

Tento příklad ukazuje účinek $DebugPreference nastaven na hodnotu Inquire. Zobrazí se zpráva ladění a uživateli se zobrazí výzva k potvrzení.

$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"):

Tento příklad používá parametr Debug s hodnotou $false k potlačení zprávy pro jeden příkaz. Zpráva ladění se nezobrazí a zpracování bude pokračovat.

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

$ErrorActionPreference

Určuje, jak PowerShell reaguje na neukončující chybu, chybu, která nezastaví zpracování rutiny. Například na příkazovém řádku nebo ve skriptu, rutině nebo poskytovateli, jako jsou chyby vygenerované rutinou Write-Error.

Proměnná $ErrorActionPreference přebírá jednu z hodnot výčtu ActionPreference: SilentlyContinue , Zastavit, Pokračovat, Inquire, Ignore, Suspendnebo Break.

Pomocí rutiny ErrorAction běžným parametrem můžete přepsat předvolbu konkrétního příkazu.

Platné hodnoty jsou následující:

  • přerušení – zadejte ladicí program, pokud dojde k chybě nebo při vyvolání výjimky.
  • Pokračovat: (Výchozí) Zobrazí chybovou zprávu a pokračuje v provádění.
  • ignorovat: Potlačí chybovou zprávu a pokračuje v provádění příkazu. Hodnota Ignorovat je určena pro použití pro jednotlivé příkazy, nikoli pro použití jako uložená předvolba. Ignorovat není platná hodnota proměnné $ErrorActionPreference.
  • Inquire: Zobrazí chybovou zprávu a zeptá se, jestli chcete pokračovat.
  • bezobslužné: Žádný efekt. Chybová zpráva se nezobrazí a provádění pokračuje bez přerušení.
  • Zastavit: Zobrazí chybovou zprávu a přestane se s ní provádět. Kromě vygenerované chyby generuje hodnota Stop objekt ActionPreferenceStopException do datového proudu chyby.
  • pozastavit: Automaticky pozastaví úlohu pracovního postupu, aby bylo možné provést další šetření. Po prošetření je možné pracovní postup obnovit. Hodnota Pozastavit je určena pro použití pro jednotlivé příkazy, nikoli pro použití jako uloženou předvolbu. pozastavit není platná hodnota proměnné $ErrorActionPreference.

$ErrorActionPreference a parametr ErrorAction neovlivňují, jak PowerShell reaguje na ukončující chyby, které zastaví zpracování rutin. Další informace o ErrorAction společný parametr naleznete v tématu about_CommonParameters.

Mnoho nativních příkazů zapisuje do stderr jako alternativní datový proud pro další informace. Toto chování může způsobit nejasnosti při prohlížení chyb nebo může dojít ke ztrátě dalších výstupních informací uživateli, pokud je $ErrorActionPreference nastaven na stav, který ztlumí výstup.

Počínaje PowerShellem 7.2 se chybové záznamy přesměrované z nativních příkazů, jako je použití operátorů přesměrování (2>&1), nezapisují do proměnné $Error a $ErrorActionPreference předvolby nemá vliv na přesměrovaný výstup.

PowerShell 7.3 přidal experimentální funkci, která umožňuje řídit způsob zpracování zpráv na stderr.

Další informace naleznete v $PSNativeCommandUseErrorActionPreference.

Příklady

Tyto příklady ukazují účinek různých hodnot $ErrorActionPreference proměnné. Parametr ErrorAction slouží k přepsání hodnoty $ErrorActionPreference.

Tento příklad ukazuje výchozí hodnotu $ErrorActionPreferenceContinue. Vygeneruje se neukončující chyba. Zpráva se zobrazí a zpracování bude pokračovat.

# 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

Tento příklad ukazuje výchozí hodnotu $ErrorActionPreferenceInquire. Vygeneruje se chyba a zobrazí se výzva k akci.

# 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"):

Tento příklad ukazuje $ErrorActionPreference nastavený na SilentlyContinue. Chybová zpráva je potlačena.

# 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

Tento příklad ukazuje $ErrorActionPreference nastavenou na Zastavit. Zobrazuje také extra objekt vygenerovaný do proměnné $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

Určuje formát zobrazení chybových zpráv v PowerShellu.

Proměnná $ErrorView přebírá jednu z hodnot výčtu ErrorView: NormalView, CategoryViewnebo ConciseView .

Platné hodnoty jsou následující:

  • ConciseView: (Výchozí) Poskytuje stručnou chybovou zprávu a refaktorované zobrazení pro pokročilé tvůrce modulů. Od PowerShellu 7.2 platí, že pokud je chyba z příkazového řádku nebo modulu skriptu, výstup je chybová zpráva s jedním řádkem. V opačném případě se zobrazí víceřádkové chybové zprávy, která obsahuje chybu, a ukazatel na chybu, která ukazuje, kde se na tomto řádku vyskytuje. Pokud terminál podporuje virtuální terminál, použijí se barevné kódy ANSI k poskytnutí barevného zvýraznění. Barvu zvýraznění lze změnit v $Host.PrivateData.ErrorAccentColor. Rutinu Get-Error použijte k komplexnímu podrobnému zobrazení plně kvalifikované chyby, včetně vnitřních výjimek.

    ConciseView byla přidána v PowerShellu 7.

  • NormalView: Podrobné zobrazení navržené pro většinu uživatelů. Skládá se z popisu chyby a názvu objektu, který je součástí chyby.

  • CategoryView: Stručné strukturované zobrazení navržené pro produkční prostředí. Formát je následující:

    {Category}: ({TargetName}:{TargetType}):[{Activity}], {Reason}

Další informace o polích v CategoryViewnaleznete v tématu ErrorCategoryInfo třída.

Příklady

Tento příklad ukazuje, jak se zobrazí chyba, když je výchozí hodnota $ErrorViewConciseView. Get-ChildItem slouží k vyhledání neexistujícího adresáře.

Get-ChildItem -Path 'C:\NoRealDirectory'
Get-ChildItem: Can't find path 'C:\NoRealDirectory' because it doesn't exist.

Tento příklad ukazuje, jak se zobrazí chyba, když je výchozí hodnota $ErrorViewConciseView. Script.ps1 se spustí a vyvolá chybu z příkazu 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.

Tento příklad ukazuje, jak se zobrazí chyba při změně hodnoty $ErrorView na NormalView. Get-ChildItem slouží k vyhledání neexistujícího souboru.

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

Tento příklad ukazuje, jak se zobrazí stejná chyba při změně hodnoty $ErrorView na CategoryView.

$ErrorView = "CategoryView"
Get-ChildItem -Path C:\nofile.txt
ObjectNotFound: (C:\nofile.txt:String) [Get-ChildItem], ItemNotFoundException

Tento příklad ukazuje, že hodnota $ErrorView má vliv pouze na zobrazení chyby. Nezmění strukturu objektu chyby, který je uložený v $Error automatické proměnné. Informace o $Error automatické proměnné najdete v tématu about_Automatic_Variables.

Následující příkaz vezme ErrorRecord objekt přidružený k nejnovější chybě v poli chyb, prvek 0a formátuje vlastnosti objektu v seznamu.

$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

Určuje, kolik výčtových položek je součástí zobrazení. Tato proměnná nemá vliv na podkladové objekty, pouze zobrazení. Pokud je hodnota $FormatEnumerationLimit menší než počet výčtových položek, PowerShell přidá tři tečky (...) k označení položek, které se nezobrazují.

platné hodnoty: Celá čísla (Int32)

Výchozí hodnota: 4

Příklady

Tento příklad ukazuje, jak pomocí proměnné $FormatEnumerationLimit zlepšit zobrazení výčtových položek.

Příkaz v tomto příkladu vygeneruje tabulku, která obsahuje všechny služby spuštěné v počítači ve dvou skupinách: jednu pro spuštěné služby a jednu pro zastavené služby. Pomocí příkazu Get-Service získá všechny služby a pak výsledky odešle prostřednictvím kanálu do rutiny Group-Object, která výsledky seskupí podle stavu služby.

Výsledkem je tabulka, která uvádí stav ve sloupci Název a procesy ve sloupci Skupina. Pokud chcete změnit popisky sloupců, použijte tabulku hash, viz about_Hash_Tables. Další informace najdete v příkladech v formátovací tabulky.

Najděte aktuální hodnotu $FormatEnumerationLimit.

$FormatEnumerationLimit
4

Zobrazí seznam všech služeb seskupených podle Stav. Pro každý stav jsou uvedeny maximálně čtyři služby ve sloupci Group, protože $FormatEnumerationLimit má hodnotu 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...}

Pokud chcete zvýšit počet uvedených položek, zvyšte hodnotu $FormatEnumerationLimit na 1000. K zobrazení služeb použijte Get-Service a Group-Object.

$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...

Pomocí Format-Table s parametrem Wrap zobrazte seznam služeb.

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

Proměnná $InformationPreference umožňuje nastavit předvolby datových proudů informací, které chcete uživatelům zobrazit. Konkrétně informační zprávy, které jste přidali do příkazů nebo skriptů přidáním rutiny Write-Information. Pokud se použije parametr InformationAction, jeho hodnota přepíše hodnotu proměnné $InformationPreference. Write-Information jsme představili v PowerShellu 5.0.

Proměnná $InformationPreference přebírá jednu z hodnot výčtu ActionPreference: SilentlyContinue , Zastavit, Pokračovat, Inquire, Ignore, Suspendnebo Break.

Platné hodnoty jsou následující:

  • přerušení – při zápisu do informačního streamu zadejte ladicí program.
  • Zastavit: Zastaví příkaz nebo skript při výskytu příkazu Write-Information.
  • Inquire: Zobrazí informační zprávu, kterou zadáte v příkazu Write-Information, a pak se zeptá, jestli chcete pokračovat.
  • Pokračovat: Zobrazí informační zprávu a pokračuje ve spuštění.
  • bezobslužné: (Výchozí) Žádný efekt. Informační zprávy se nezobrazují a skript pokračuje bez přerušení.

$Log*Event

Proměnné předvoleb Log*Event*Event určují, které typy událostí se zapisují do protokolu událostí PowerShellu v Prohlížeči událostí. Ve výchozím nastavení se protokolují pouze události modulu a zprostředkovatele. Můžete ale použít proměnné předvoleb Log*Event*Event přizpůsobit protokol, například protokolování událostí o příkazech.

Proměnné předvoleb Log*Event jsou následující:

  • $LogCommandHealthEvent: Protokoluje chyby a výjimky při inicializaci a zpracování příkazů. Výchozí hodnota je $false (nezaprotokolováno).
  • $LogCommandLifecycleEvent: Zaznamenává spouštění a zastavování příkazů a kanálů příkazů a výjimek zabezpečení při zjišťování příkazů. Výchozí hodnota je $false (nezaprotokolováno).
  • $LogEngineHealthEvent: Protokoluje chyby a chyby relací. Výchozí hodnota je $true (zaprotokolována).
  • $LogEngineLifecycleEvent: Zaznamená do protokolu otevření a uzavření relací. Výchozí hodnota je $true (zaprotokolována).
  • $LogProviderHealthEvent: Protokoluje chyby zprostředkovatele, jako jsou chyby čtení a zápisu, chyby vyhledávání a chyby vyvolání. Výchozí hodnota je $true (zaprotokolována).
  • $LogProviderLifecycleEvent: Zaznamenává přidávání a odebírání zprostředkovatelů PowerShellu. Výchozí hodnota je $true (zaprotokolována). Informace o poskytovateli PowerShellu najdete v tématu about_Providers.

Pokud chcete povolit log*Event, zadejte proměnnou s hodnotou $true, například:

$LogCommandLifecycleEvent = $true

Pokud chcete zakázat typ události, zadejte proměnnou s hodnotou $false, například:

$LogCommandLifecycleEvent = $false

Události, které povolíte, jsou platné jenom pro aktuální konzolu PowerShellu. Pokud chcete konfiguraci použít pro všechny konzoly, uložte nastavení proměnné v profilu PowerShellu. Další informace najdete v tématu about_Profiles.

$MaximumHistoryCount

Určuje, kolik příkazů se uloží v historii příkazů pro aktuální relaci.

platné hodnoty: 1 – 32768 (Int32)

výchozí : 4096

Pokud chcete určit počet příkazů, které jsou aktuální uložené v historii příkazů, zadejte:

(Get-History).Count

Pokud chcete zobrazit příkazy uložené v historii relací, použijte rutinu Get-History. Další informace najdete v tématu about_History.

$OFS

Oddělovač výstupních polí (OFS) určuje znak, který odděluje prvky pole převedeného na řetězec.

Platné hodnoty: Libovolný řetězec.

výchozí : mezera

Ve výchozím nastavení proměnná $OFS neexistuje a oddělovač výstupních souborů je mezera, ale tuto proměnnou můžete přidat a nastavit ji na libovolný řetězec. Hodnotu $OFS v relaci můžete změnit zadáním $OFS="<value>".

Poznámka

Pokud očekáváte výchozí hodnotu mezery (" ") ve výstupu skriptu, modulu nebo konfigurace, dávejte pozor, aby se výchozí hodnota $OFS nezměnila jinde v kódu.

Příklady

Tento příklad ukazuje, že mezera slouží k oddělení hodnot při převodu pole na řetězec. V tomto případě je pole celých čísel uloženo v proměnné a pak se proměnná přetypuje jako řetězec.

$array = 1,2,3,4
[string]$array
1 2 3 4

Pokud chcete změnit oddělovač, přidejte $OFS proměnnou tím, že jí přiřadíte hodnotu. Proměnná musí mít název $OFS.

$OFS = "+"
[string]$array
1+2+3+4

Chcete-li obnovit výchozí chování, můžete přiřadit mezeru (" ") k hodnotě $OFS nebo odstranit proměnnou. Následující příkazy odstraňují proměnnou a ověřte, že oddělovač je mezera.

Remove-Variable OFS
[string]$array
1 2 3 4

$OutputEncoding

Určuje metodu kódování znaků, kterou PowerShell používá při propojení dat do nativních aplikací.

Poznámka

Ve většině scénářů by hodnota $OutputEncoding měla odpovídat hodnotě [Console]::InputEncoding.

Platné hodnoty jsou následující: Objekty odvozené z třídy Encoding, například ASCIIEncoding, UTF7Encoding, UTF8Encoding, UTF32Encodinga UnicodeEncoding.

výchozí : objekt UTF8Encoding.

Příklady

První příkaz najde hodnotu $OutputEncoding. Vzhledem k tomu, že hodnota je objekt kódování, zobrazte pouze jeho EncodingName vlastnost.

$OutputEncoding.EncodingName

Zbývající příklady používají následující skript PowerShellu uložený jako hexdump.ps1 k ilustraci chování $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()
}

Následující příklad ukazuje, jak je řetězcová hodnota café kódována na bajty při vložení do hexdump.ps1 vytvořené výše. Ukazuje, že řetězcová hodnota je kódována pomocí UTF8Encoding schématu.

'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�

Následující příklad ukazuje, jak se bajty mění při změně kódování 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

Určuje, jak PowerShell reaguje na probíhající aktualizace generované skriptem, rutinou nebo poskytovatelem, jako jsou indikátory průběhu generované rutinou Write-Progress. Rutina Write-Progress vytvoří indikátory průběhu, které zobrazují stav příkazu.

Proměnná $ProgressPreference přebírá jednu z hodnot výčtu ActionPreference: SilentlyContinue , Zastavit, Pokračovat, Inquire, Ignore, Suspendnebo Break.

Platné hodnoty jsou následující:

  • přerušení – při zápisu do streamu Průběhu zadejte ladicí program.
  • Zastavit: Nezobrazuje indikátor průběhu. Místo toho zobrazí chybovou zprávu a přestane se s ní provádět.
  • Inquire: Nezobrazuje indikátor průběhu. Zobrazí výzvu k pokračování oprávnění. Pokud odpovíte pomocí Y nebo A, zobrazí se indikátor průběhu.
  • Pokračovat: (Výchozí) Zobrazí indikátor průběhu a pokračuje v provádění.
  • bezobslužné: Spustí příkaz, ale nezobrazí indikátor průběhu.

$PSDefaultParameterValues

Určuje výchozí hodnoty parametrů rutin a pokročilých funkcí. Hodnota $PSDefaultParameterValues je tabulka hash, ve které se klíč skládá z názvu rutiny a názvu parametru odděleného dvojtečkam (:). Hodnota je vlastní výchozí hodnota, kterou zadáte.

$PSDefaultParameterValues byla zavedena v PowerShellu 3.0.

Další informace o této proměnné předvoleb najdete v tématu about_Parameters_Default_Values.

$PSEmailServer

Určuje výchozí e-mailový server, který se používá k odesílání e-mailových zpráv. Tuto proměnnou předvoleb používají rutiny, které odesílají e-maily, například rutinu Send-MailMessage.

$PSModuleAutoLoadingPreference

Povolí a zakáže automatický import modulů v relaci. Proměnná $PSModuleAutoLoadingPreference ve výchozím nastavení neexistuje. Výchozí chování, pokud proměnná není definovaná, je stejná jako $PSModuleAutoLoadingPreference = 'All'.

Pokud chcete modul importovat automaticky, získejte nebo použijte příkaz obsažený v modulu.

Proměnná $PSModuleAutoLoadingPreference přebírá jednu z hodnot výčtu PSModuleAutoLoadingPreference:

  • All: Moduly se automaticky importují při prvním použití.
  • ModuleQualified: Moduly se naimportují automaticky pouze v případech, kdy uživatel používá kvalifikovaný název modulu v modulu. Pokud například uživatel zadá MyModule\MyCommand, PowerShell importuje modul MyModule.
  • None: Zakáže automatický import modulů. K importu modulu použijte rutinu Import-Module.

Další informace o automatickém importu modulů naleznete v tématu about_Modules.

$PSNativeCommandArgumentPassing

PowerShell 7.3 změnil způsob, jakým analyzuje příkazový řádek pro nativní příkazy. Toto chování řídí nová proměnná předvoleb $PSNativeCommandArgumentPassing.

Opatrnost

Nové chování je zásadní změna z předchozího chování. To může narušit skripty a automatizaci, které řeší různé problémy při vyvolání nativních aplikací.

Automatická proměnná $PSNativeCommandArgumentPassing umožňuje vybrat chování za běhu. Platné hodnoty jsou Legacy, Standarda Windows. Legacy je historické chování.

Proměnná $PSNativeCommandArgumentPassing je ve výchozím nastavení definována, ale hodnota je specifická pro platformu.

  • Ve Windows je předvolba nastavená na Windows.
  • Na jiných platformách než Windows je předvolba nastavená na Standard.
  • Pokud jste odebrali proměnnou $PSNativeCommandArgumentPassing, PowerShell použije Standard chování.

Chování Windows a režimu Standard jsou stejné s výjimkou, s výjimkou Windows režimu používá PowerShell při spuštění následujících souborů Legacy chování argumentu.

  • cmd.exe
  • cscript.exe
  • find.exe
  • sqlcmd.exe
  • wscript.exe
  • Soubory končící na:
    • .bat
    • .cmd
    • .js
    • .vbs
    • .wsf

Pokud je $PSNativeCommandArgumentPassing nastavená na Legacy nebo Standard, analyzátor tyto soubory nekontroluje. Příklady nového chování najdete v tématu about_Parsing.

PowerShell 7.3 také přidal možnost trasovat vazbu parametrů pro nativní příkazy. Další informace naleznete v tématu Trace-Command.

$PSNativeCommandUseErrorActionPreference

Pokud je $PSNativeCommandUseErrorActionPreference$true, nativní příkazy s nenulovými ukončovacími kódy vydávají chyby podle $ErrorActionPreference.

Některé nativní příkazy, například robocopy používají nenulové ukončovací kódy k reprezentaci jiných informací než chyb. V těchto případech můžete dočasně zakázat chování a zabránit nenulovým ukončovacím kódům v vystavování chyb.

& {
    # 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"
    }
}

V tomto příkladu se proměnná $PSNativeCommandUseErrorActionPreference změní uvnitř bloku skriptu. Změna je místní pro skriptblock. Když se skriptblock ukončí, proměnná se vrátí k předchozí hodnotě.

$PSSessionApplicationName

Určuje výchozí název aplikace pro vzdálený příkaz, který používá technologii Web Services for Management (WS-Management). Další informace naleznete v tématu O vzdálené správě systému Windows.

Výchozí název aplikace systému je WSMAN, ale tuto proměnnou předvoleb můžete použít ke změně výchozího nastavení.

Název aplikace je poslední uzel v identifikátoru URI připojení. Například název aplikace v následujícím ukázkovém identifikátoru URI je WSMAN.

http://Server01:8080/WSMAN

Výchozí název aplikace se používá, když vzdálený příkaz nezadá identifikátor URI připojení ani název aplikace.

Služba WinRM používá název aplikace k výběru naslouchacího procesu pro službu žádosti o připojení. Hodnota parametru by měla odpovídat hodnotě URLPrefix vlastnosti naslouchacího procesu ve vzdáleném počítači.

Chcete-li přepsat výchozí hodnotu systému a hodnotu této proměnné a vybrat jiný název aplikace pro konkrétní relaci, použijte ConnectionURI nebo ApplicationName parametry New-PSSession, Enter-PSSessionnebo Invoke-Command rutin.

Proměnná předvoleb $PSSessionApplicationName je nastavena na místním počítači, ale určuje naslouchací proces ve vzdáleném počítači. Pokud zadaný název aplikace ve vzdáleném počítači neexistuje, příkaz k navázání relace selže.

$PSSessionConfigurationName

Určuje výchozí konfiguraci relace, která se používá k vytváření nových relací v aktuální relaci.

Tato proměnná předvoleb je nastavená na místním počítači, ale určuje konfiguraci relace umístěnou ve vzdáleném počítači.

Hodnota proměnné $PSSessionConfigurationName je plně kvalifikovaný identifikátor URI prostředku.

Výchozí hodnota http://schemas.microsoft.com/PowerShell/microsoft.PowerShell označuje konfiguraci relace Microsoft.PowerShellu na vzdáleném počítači.

Pokud zadáte pouze název konfigurace, je předem zadán následující identifikátor URI schématu:

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

Výchozí nastavení můžete přepsat a vybrat jinou konfiguraci relace pro konkrétní relaci pomocí parametru ConfigurationName rutiny New-PSSession, Enter-PSSessionnebo Invoke-Command.

Hodnotu této proměnné můžete kdykoli změnit. Když to uděláte, nezapomeňte, že konfigurace relace, kterou vyberete, musí existovat ve vzdáleném počítači. Pokud ne, příkaz k vytvoření relace, která používá konfiguraci relace, selže.

Tato proměnná předvoleb nezodpovědí, které konfigurace místních relací se použijí, když vzdálení uživatelé vytvoří relaci, která se připojí k tomuto počítači. Pomocí oprávnění pro konfigurace místních relací ale můžete určit, kteří uživatelé je mohou používat.

$PSSessionOption

Vytvoří výchozí hodnoty pro pokročilé možnosti uživatele ve vzdálené relaci. Tyto předvolby možností přepíší výchozí hodnoty systému pro možnosti relace.

Proměnná $PSSessionOption obsahuje objekt PSSessionOption. Další informace naleznete v tématu System.Management.Automation.Remoting.PSSessionOption. Každá vlastnost objektu představuje možnost relace. Například NoCompression vlastnost změní kompresi dat během relace.

Ve výchozím nastavení $PSSessionOption proměnná obsahuje objekt PSSessionOption s výchozími hodnotami pro všechny možnosti, jak je znázorněno níže.

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

Popisy těchto možností a další informace naleznete v tématu New-PSSessionOption. Další informace o vzdálených příkazech a relacích najdete v tématu about_Remote a about_PSSessions.

Pokud chcete změnit hodnotu proměnné předvoleb $PSSessionOption, použijte rutinu New-PSSessionOption k vytvoření objektu PSSessionOp tion s požadovanými hodnotami možností. Uložte výstup do proměnné s názvem $PSSessionOption.

$PSSessionOption = New-PSSessionOption -NoCompression

Pokud chcete použít proměnnou předvoleb $PSSessionOption v každé relaci PowerShellu, přidejte do profilu PowerShellu New-PSSessionOption příkaz, který vytvoří proměnnou $PSSessionOption. Další informace najdete v tématu about_Profiles.

Můžete nastavit vlastní možnosti pro konkrétní vzdálenou relaci. Možnosti, které nastavíte, mají přednost před výchozími hodnotami systému a hodnotou proměnné předvoleb $PSSessionOption.

Pokud chcete nastavit vlastní možnosti relace, použijte rutinu New-PSSessionOption k vytvoření objektu PSSessionOption. Potom použijte objekt PSSessionOption jako hodnotu parametru SessionOption v rutinách, které vytvářejí relaci, například New-PSSession, Enter-PSSessiona Invoke-Command.

$PSStyle

Od PowerShellu 7.2 teď máte přístup k $PSStyle automatické proměnné, abyste mohli zobrazit a změnit vykreslování výstupu řetězce ANSI. $PSStyle je instance třídy PSStyle. Členové této třídy definují řetězce obsahující řídicí sekvence ANSI, které řídí vykreslování textu v terminálu.

Základní členové vracejí řetězce řídicích sekvencí ANSI mapovaných na jejich názvy. Hodnoty jsou nastavené tak, aby umožňovaly přizpůsobení. Názvy vlastností usnadňují vytváření zdobených řetězců pomocí dokončování tabulátoru. Například:

"$($PSStyle.Background.BrightCyan)Power$($PSStyle.Underline)$($PSStyle.Bold)Shell$($PSStyle.Reset)"

Členy pozadí pozadí a popředí mají také FromRgb() metodu pro určení 24bitové barvy.

Další informace o $PSStylenaleznete v tématu about_ANSI_Terminals.

$Transcript

Používá Start-Transcript k zadání názvu a umístění souboru přepisu. Pokud nezadáte hodnotu parametru Path, Start-Transcript použije cestu v hodnotě globální proměnné $Transcript. Pokud jste tuto proměnnou nevytvořili, Start-Transcript uloží přepisy do následujícího umístění s použitím výchozího názvu:

  • Ve Windows: $HOME\Documents
  • V Linuxu nebo macOS: $HOME

Výchozí název souboru je: PowerShell_transcript.<computername>.<random>.<timestamp>.txt.

$VerbosePreference

Určuje, jak PowerShell reaguje na podrobné zprávy generované skriptem, rutinou nebo poskytovatelem, jako jsou zprávy generované rutinou Write-Verbose. Podrobné zprávy popisují akce prováděné při spuštění příkazu.

Ve výchozím nastavení se podrobné zprávy nezobrazují, ale toto chování můžete změnit změnou hodnoty $VerbosePreference.

Proměnná $VerbosePreference přebírá jednu z hodnot výčtu ActionPreference: SilentlyContinue , Zastavit, Pokračovat, Inquire, Ignore, Suspendnebo Break.

Platné hodnoty jsou následující:

  • přerušení – při zápisu do podrobného datového proudu zadejte ladicí program.
  • Zastavit: Zobrazí podrobnou zprávu a chybovou zprávu a pak přestane fungovat.
  • Inquire: Zobrazí podrobnou zprávu a zobrazí výzvu, která vás vyzve, zda chcete pokračovat.
  • Pokračovat: Zobrazí podrobnou zprávu a pak pokračuje v provádění.
  • bezobslužné: (Výchozí) Nezobrazuje podrobnou zprávu. Pokračuje v provádění.

K zobrazení nebo skrytí podrobných zpráv pro konkrétní příkaz můžete použít podrobný společný parametr rutiny. Další informace najdete v tématu about_CommonParameters.

Příklady

Tyto příklady ukazují účinek různých hodnot $VerbosePreference a parametru Podrobné k přepsání hodnoty předvolby.

Tento příklad ukazuje efekt hodnoty SilentlyContinue, což je výchozí hodnota. Příkaz používá parametr Message, ale nezapisuje zprávu do konzoly PowerShellu.

Write-Verbose -Message "Verbose message test."

Při použití podrobného parametru se zpráva zapíše.

Write-Verbose -Message "Verbose message test." -Verbose
VERBOSE: Verbose message test.

Tento příklad ukazuje efekt hodnoty Continue. Proměnná $VerbosePreference je nastavená na Pokračovat a zobrazí se zpráva.

$VerbosePreference = "Continue"
Write-Verbose -Message "Verbose message test."
VERBOSE: Verbose message test.

Tento příklad používá parametr Podrobné s hodnotou $false, která přepíše hodnotu Continue. Zpráva se nezobrazí.

Write-Verbose -Message "Verbose message test." -Verbose:$false

Tento příklad ukazuje účinek hodnoty Stop. Proměnná $VerbosePreference je nastavená na Zastavit a zobrazí se zpráva. Příkaz se zastaví.

$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."

V tomto příkladu se používá parametr Podrobné s hodnotou $false, která přepíše hodnotu Stop. Zpráva se nezobrazí.

Write-Verbose -Message "Verbose message test." -Verbose:$false

Tento příklad ukazuje účinek hodnoty Inquire. Proměnná $VerbosePreference je nastavená na Inquire . Zobrazí se zpráva a uživateli se zobrazí výzva k potvrzení.

$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"):

Tento příklad používá parametr Podrobné s hodnotou $false, která přepíše hodnotu Inquire. Uživatel se nezobrazí a zpráva se nezobrazí.

Write-Verbose -Message "Verbose message test." -Verbose:$false

$WarningPreference

Určuje, jak PowerShell reaguje na zprávy upozornění generované skriptem, rutinou nebo poskytovatelem, jako jsou zprávy generované rutinou Write-Warning.

Ve výchozím nastavení se zobrazují zprávy upozornění a provádění pokračuje, ale toto chování můžete změnit změnou hodnoty $WarningPreference.

Proměnná $WarningPreference přebírá jednu z hodnot výčtu ActionPreference: SilentlyContinue , Zastavit, Pokračovat, Inquire, Ignore, Suspendnebo Break.

Platné hodnoty jsou následující:

  • přerušení – při zápisu zprávy s upozorněním zadejte ladicí program.
  • Zastavit: Zobrazí zprávu s upozorněním a chybovou zprávu a pak přestane fungovat.
  • Inquire: Zobrazí zprávu s upozorněním a zobrazí výzvu k povolení k pokračování.
  • Pokračovat: (Výchozí) Zobrazí zprávu upozornění a pak pokračuje v provádění.
  • bezobslužné: Nezobrazuje se zpráva upozornění. Pokračuje v provádění.

Pomocí WarningAction běžným parametrem rutiny můžete určit, jak PowerShell reaguje na upozornění z konkrétního příkazu. Další informace najdete v tématu about_CommonParameters.

Příklady

Tyto příklady ukazují účinek různých hodnot $WarningPreference. Parametr WarningAction přepíše hodnotu předvolby.

Tento příklad ukazuje účinek výchozí hodnoty, Continue.

$m = "This action can delete data."
Write-Warning -Message $m
WARNING: This action can delete data.

Tento příklad používá parametr WarningAction s hodnotou SilentlyContinue potlačení upozornění. Zpráva se nezobrazí.

$m = "This action can delete data."
Write-Warning -Message $m -WarningAction SilentlyContinue

Tento příklad změní proměnnou $WarningPreference na hodnotu SilentlyContinue. Zpráva se nezobrazí.

$WarningPreference = "SilentlyContinue"
$m = "This action can delete data."
Write-Warning -Message $m

Tento příklad používá parametr WarningAction k zastavení při vygenerování upozornění.

$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

Tento příklad změní proměnnou $WarningPreference na hodnotu Inquire. Uživateli se zobrazí výzva k potvrzení.

$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"):

Tento příklad používá parametr WarningAction s hodnotou SilentlyContinue. Příkaz se bude dál spouštět a nezobrazí se žádná zpráva.

$m = "This action can delete data."
Write-Warning -Message $m -WarningAction SilentlyContinue

Tento příklad změní hodnotu $WarningPreference na Stop.

$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

Tento příklad používá WarningAction s hodnotou Inquire. Když dojde k upozornění, zobrazí se uživateli výzva.

$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

Určuje, zda WhatIf je automaticky povolen pro každý příkaz, který ho podporuje. Když whatIf je povolená, rutina hlásí očekávaný účinek příkazu, ale nespustí příkaz.

Platné hodnoty jsou následující:

  • false (0, není povoleno): (Výchozí) WhatIf není automaticky povolen. Pokud ho chcete povolit ručně, použijte parametr WhatIf rutiny.
  • True (1, povoleno): WhatIf se automaticky povolí u libovolného příkazu, který ho podporuje. Uživatelé můžou pomocí parametru WhatIf s hodnotou False zakázat ručně, například -WhatIf:$false.

Příklady

Tyto příklady ukazují účinek různých hodnot $WhatIfPreference. Ukazují, jak pomocí parametru WhatIf přepsat hodnotu předvolby pro konkrétní příkaz.

Tento příklad ukazuje účinek proměnné $WhatIfPreference nastavena na výchozí hodnotu, False. Pomocí Get-ChildItem ověřte, že soubor existuje. Remove-Item soubor odstraní. Po odstranění souboru můžete odstranění ověřit 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

Tento příklad ukazuje účinek použití parametru WhatIf, pokud je hodnota $WhatIfPreferenceFalse.

Ověřte, že soubor existuje.

Get-ChildItem -Path .\test2.txt
    Directory: C:\Test

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---           2/28/2019    17:06             12 test2.txt

Pomocí parametru WhatIf určete výsledek pokusu o odstranění souboru.

Remove-Item -Path .\test2.txt -WhatIf
What if: Performing the operation "Remove File" on target "C:\Test\test2.txt".

Ověřte, že se soubor neodstranil.

Get-ChildItem -Path .\test2.txt
    Directory: C:\Test

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---           2/28/2019    17:06             12 test2.txt

Tento příklad ukazuje účinek proměnné $WhatIfPreference nastavenou na hodnotu, True. Když k odstranění souboru použijete Remove-Item, zobrazí se cesta k souboru, ale soubor se neodstraní.

Pokus o odstranění souboru Zobrazí se zpráva o tom, co by se stalo, když se Remove-Item spustil, ale soubor se neodstraní.

$WhatIfPreference = "True"
Remove-Item -Path .\test2.txt
What if: Performing the operation "Remove File" on target "C:\Test\test2.txt".

Pomocí Get-ChildItem ověřte, že se soubor neodstranil.

Get-ChildItem -Path .\test2.txt
    Directory: C:\Test

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---           2/28/2019    17:06             12 test2.txt

Tento příklad ukazuje, jak odstranit soubor, když hodnota $WhatIfPreference je True. Používá parametr WhatIf s hodnotou $false. K ověření odstranění souboru použijte Get-ChildItem.

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

Tady jsou příklady rutiny Get-Process, která nepodporuje WhatIf a Stop-Process, které podporují WhatIf. Hodnota proměnné $WhatIfPreference je true.

Get-Process nepodporuje WhatIf. Po spuštění příkazu se zobrazí 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 podporuje WhatIf. Proces winword není zastavený.

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

Chování Stop-ProcessWhatIf můžete přepsat pomocí parametru WhatIf hodnotou $false. Proces winword je zastavený.

Stop-Process -Name Winword -WhatIf:$false

Chcete-li ověřit, zda byl proces winword zastaven, použijte 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

Viz také