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.
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í $ConfirmPreference
hodnotu proměnné.
$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 Střední.
$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. Například při spuštění vzdáleného příkazu určuje hodnota proměnné vzdáleného počítače $DebugPreference
způsob, jakým PowerShell reaguje na zprávy ladění.
Další informace o vzdálených příkazech najdete v tématu about_Remote.
$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 $ConfirmPreference
proměnné menší nebo rovna riziku přiřazené 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 $ConfirmPreference
proměnné None, PowerShell vás před spuštěním rutiny nebo funkce nikdy automaticky nezobrazí.
Pokud chcete změnit chování potvrzení pro všechny rutiny a funkce v relaci, změňte $ConfirmPreference
hodnotu proměnné.
Pokud chcete přepsat $ConfirmPreference
jeden příkaz, použijte parametr Confirm rutiny nebo funkce. Pokud chcete požádat o potvrzení, použijte -Confirm
. Chcete-li potlačit 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 Confirm 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í.
- Vysoká: 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 označované jako ConfirmImpact. Uživatelé ho nemůžou změnit.
Rutiny a funkce, které mohou představovat riziko pro systém, mají parametr Confirm , 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 Medium pro ConfirmImpact.
$ConfirmPreference
je ve výchozím nastavení nastavená na Hodnotu Vysoká . Proto je vzácné, že příkazy automaticky zobrazí výzvu k potvrzení, když uživatelé nezadají parametr Confirm .
Pokud chcete rozšířit zobrazení výzvy k automatickému potvrzení na více rutin a funkcí, nastavte hodnotu $ConfirmPreference
na Střední nebo Nízká.
Příklady
Tento příklad ukazuje účinek $ConfirmPreference
výchozí hodnoty proměnné High. Vysoká hodnota pouze potvrzuje 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
odstraňují soubor. Přidání -Confirm
do příkazového řádku uživatele k potvrzení.
$ConfirmPreference
High
Remove-Item -Path C:\temp1.txt
Slouží -Confirm
k vyžádání potvrzení.
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 Střední. 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 Confirm 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 na příkazovém Write-Debug
řádku.
Proměnná $DebugPreference
přebírá jednu z hodnot výčtuActionPreference
: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend nebo 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
.
Pomocí běžného parametru Ladění rutiny můžete zobrazit nebo skrýt zprávy ladění pro konkrétní příkaz. Další informace najdete v tématu about_CommonParameters.
Platné hodnoty jsou následující:
- Konec – Zadejte ladicí program, když dojde k chybě nebo když je vyvolána výjimka.
- Stop: Zobrazí zprávu ladění a přestane se spouštějí. Zapíše do konzoly chybu.
- Diagnostika: 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í.
- SilentlyContinue: (Výchozí) Žádný efekt. Zpráva ladění se nezobrazí a provádění pokračuje bez přerušení.
Přidání běžného parametru Debug do příkazu, když je příkaz nakonfigurován pro vygenerování ladicí zprávy, změní hodnotu $DebugPreference
proměnné na Continue.
Příklady
Následující příklady ukazují vliv změny hodnot $DebugPreference
při Write-Debug
zadání příkazu na příkazovém řádku.
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 $DebugPreference
výchozí hodnoty proměnné SilentlyContinue. Ve výchozím nastavení Write-Debug
se zpráva ladění rutiny nezobrazí a zpracování pokračuje. Při použití parametru 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 účinek $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
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 $DebugPreference
nastavení na hodnotu Stop . 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
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
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ýčtuActionPreference
: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend nebo Break.
Pomocí běžného parametru ErrorAction rutiny můžete přepsat předvolbu konkrétního příkazu.
Platné hodnoty jsou následující:
- Konec – Zadejte ladicí program, když dojde k chybě nebo když je vyvolána výjimka.
- 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čená pro použití pro jednotlivé příkazy, ne pro použití jako uloženou předvolbu. Ignorovat není platná hodnota proměnné
$ErrorActionPreference
. - Diagnostika: Zobrazí chybovou zprávu a zeptá se, jestli chcete pokračovat.
- SilentlyContinue: Žádný efekt. Chybová zpráva se nezobrazí a provádění pokračuje bez přerušení.
- Stop: Zobrazí chybovou zprávu a přestane se spouštějí. Kromě vygenerované chyby vygeneruje hodnota Stop objekt ActionPreferenceStopException do datového proudu chyby.
- Pozastavení: 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 Suspend je určena pro použití pro jednotlivé příkazy, ne pro použití jako uloženou předvolbu. Suspend není platná hodnota proměnné
$ErrorActionPreference
.
$ErrorActionPreference
a parametr ErrorAction nemá vliv na to, jak PowerShell reaguje na ukončující chyby, které zastaví zpracování rutin. Další informace o společném parametru ErrorAction najdete v tématu about_CommonParameters.
Mnoho nativních příkazů zapisuje jako stderr
alternativní datový proud pro další informace. Toto chování může způsobit nejasnosti při prohlížení chyb nebo další výstupní informace mohou být pro uživatele ztraceny, pokud $ErrorActionPreference
je nastaven 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 $Error
proměnné a předvolba $ErrorActionPreference
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 stderr
.
Další informace najdete v $PSNativeCommandUseErrorActionPreference.
Příklady
Tyto příklady ukazují účinek různých hodnot $ErrorActionPreference
proměnné. K přepsání $ErrorActionPreference
hodnoty se používá parametr ErrorAction.
Tento příklad ukazuje $ErrorActionPreference
výchozí hodnotu Continue. 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 $ErrorActionPreference
výchozí hodnotu Inquire. 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 nastavenou $ErrorActionPreference
hodnotu 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
V tomto příkladu je sada nastavená na $ErrorActionPreference
Zastavit. Zobrazuje také další objekt vygenerovaný pro proměnnou $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ýčtuErrorView
: NormalView, CategoryView nebo 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 na adrese
$Host.PrivateData.ErrorAccentColor
. Rutina sloužíGet-Error
k komplexnímu podrobnému zobrazení plně kvalifikované chyby, včetně vnitřních výjimek.Funkce 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 CategoryView naleznete v tématu ErrorCategoryInfo třída.
Příklady
Tento příklad ukazuje, jak se zobrazí chyba, když je výchozí hodnota $ErrorView
ConciseView. 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 $ErrorView
ConciseView. Script.ps1
je spuštěna a vyvolá chybu z Get-Item
příkazu.
./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, když je hodnota $ErrorView
změněna 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 při změně hodnoty $ErrorView
categoryView zobrazí stejná chyba.
$ErrorView = "CategoryView"
Get-ChildItem -Path C:\nofile.txt
ObjectNotFound: (C:\nofile.txt:String) [Get-ChildItem], ItemNotFoundException
Tento příklad ukazuje, že hodnota $ErrorView
pouze ovlivňuje 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 přebírá ErrorRecord objekt přidružený k nejnovější chybě v poli chyby, prvku 0 a 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 (...
) označující položky, které se nezobrazují.
Platné hodnoty: Celá čísla (Int32
)
Výchozí hodnota: 4
Příklady
Tento příklad ukazuje, jak pomocí $FormatEnumerationLimit
proměnné vylepš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í Get-Service
příkazu získá všechny služby a pak výsledky odešle prostřednictvím kanálu do Group-Object
rutiny, 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 tabulky Format-Table.
Najděte aktuální hodnotu $FormatEnumerationLimit
.
$FormatEnumerationLimit
4
Zobrazí seznam všech služeb seskupených podle stavu. Ve sloupci Skupina jsou pro každý stav uvedeny maximálně čtyři služby, 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 položek uvedených, zvyšte hodnotu $FormatEnumerationLimit
na 1 000. Použijte Get-Service
a Group-Object
zobrazte služby.
$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...
Seznam služeb zobrazíte Format-Table
pomocí parametru Wrap .
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 $InformationPreference
proměnné.
Write-Information
byl představen v PowerShellu 5.0.
Proměnná $InformationPreference
přebírá jednu z hodnot výčtuActionPreference
: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend nebo Break.
Platné hodnoty jsou následující:
- Konec – Při zápisu do informačního streamu zadejte ladicí program.
- Stop: Zastaví příkaz nebo skript na výskytu
Write-Information
příkazu. - Diagnostika: Zobrazí informační zprávu, kterou zadáte v
Write-Information
příkazu, a pak se zeptá, jestli chcete pokračovat. - Pokračovat: Zobrazí informační zprávu a pokračuje ve spuštění.
- SilentlyContinue: (Výchozí) Žádný efekt. Informační zprávy se nezobrazují a skript pokračuje bez přerušení.
$Log*Událost
Proměnné předvoleb událostí protokolu*určují, které typy událostí se zapisují do protokolu událostí PowerShellu Prohlížeč 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 událostí log*k přizpůsobení protokolu, například protokolování událostí o příkazech.
Proměnné předvoleb událostí protokolu jsou následující:
$LogCommandHealthEvent
: Protokoluje chyby a výjimky při inicializaci a zpracování příkazů. Výchozí hodnota je$false
(nezaprotokolována).$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ána).$LogEngineHealthEvent
: Protokoluje chyby a selhání relací. Výchozí hodnota je$true
(zaprotokolována).$LogEngineLifecycleEvent
: Zaprokoluje otevírání a zavírání 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í hodnota: 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 tuto 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í $OFS
proměnná neexistuje a oddělovač výstupního souboru 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 $OFS
se výchozí hodnota 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
Pokud chcete obnovit výchozí chování, můžete k hodnotě $OFS
proměnné přiřadit mezeru (" "
) nebo ji odstranit. 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, jako je ASCIIEncoding, UTF7Encoding, UTF8Encoding, UTF32Encoding a UnicodeEncoding.
Výchozí: UTF8Encoding objekt.
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ý hexdump.ps1
jako 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, když se předá do hexdump.ps1
vytvořeného výše. Ukazuje, že řetězcová hodnota je kódována pomocí schématu UTF8Encoding .
'café' | pwsh -File ./hexdump.ps1
Label: Byte[] (System.Byte[]) <28873E25>
Offset Bytes Ascii
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
------ ----------------------------------------------- -----
0000000000000000 63 61 66 C3 A9 0D 0A caf�
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 aktualizace průběhu generované skriptem, rutinou nebo poskytovatelem, jako jsou indikátory průběhu vygenerované 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ýčtuActionPreference
: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend nebo Break.
Platné hodnoty jsou následující:
- Konec – Při zápisu do streamu Průběhu zadejte ladicí program.
- Stop: Nezobrazuje indikátor průběhu. Místo toho zobrazí chybovou zprávu a přestane se s ní provádět.
- Diagnostika: Nezobrazuje indikátor průběhu. Zobrazí výzvu k pokračování oprávnění. Pokud odpovíte pomocí
Y
neboA
, zobrazí se indikátor průběhu. - Pokračovat: (Výchozí) Zobrazí indikátor průběhu a pokračuje v provádění.
- SilentlyContinue: 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, kde se klíč skládá z názvu rutiny a názvu parametru odděleného dvojtečka (:
). Hodnota je vlastní výchozí hodnota, kterou zadáte.
$PSDefaultParameterValues
byl představen 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í definována, 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 příkazu 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 rutinuImport-Module
.
Další informace o automatickém importu modulů najdete 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á $PSNativeCommandArgumentPassing
proměnná předvoleb.
Upozornění
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
, Standard
a Windows
. Legacy
je historické chování.
Proměnná $PSNativeCommandArgumentPassing
je ve výchozím nastavení definovaná, ale hodnota je specifická pro platformu.
- Ve Windows je předvolba nastavená na
Windows
. - Na jiných platformách než Windows je předvolba nastavena na
Standard
. - Pokud jste proměnnou
$PSNativeCommandArgumentPassing
odebrali, PowerShell použije chováníStandard
.
Chování Windows
a Standard
režim jsou stejné s výjimkou, v Windows
režimu, PowerShell používá Legacy
chování argumentu předávání při spuštění následujících souborů.
cmd.exe
cscript.exe
find.exe
sqlcmd.exe
wscript.exe
- Soubory končící na:
.bat
.cmd
.js
.vbs
.wsf
Pokud je tato možnost $PSNativeCommandArgumentPassing
nastavená na hodnotu 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 $PSNativeCommandUseErrorActionPreference
je , $true
nativní příkazy s nenulovými ukončovacími kódy vydávají chyby podle $ErrorActionPreference
.
Některé nativní příkazy, jako je 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 $PSNativeCommandUseErrorActionPreference
se proměnná změní uvnitř skriptublock. 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 Ws-Management (Web Services for Management). Další informace naleznete v tématu Vzdálená správa systému Windows.
Výchozí název aplikace systému je WSMAN
, ale tuto předvolbu můžete použít ke změně výchozí hodnoty.
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 se měla shodovat s hodnotou vlastnosti URLPrefix 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 určitou relaci, použijte parametry ConnectionURI nebo ApplicationName rutin New-PSSession, Enter-PSSession nebo Invoke-Command .
Proměnná $PSSessionApplicationName
předvoleb 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 $PSSessionConfigurationName
proměnné je plně kvalifikovaný identifikátor URI prostředku.
Výchozí hodnota http://schemas.microsoft.com/PowerShell/microsoft.PowerShell
označuje konfiguraci relace Microsoft.PowerShellu ve 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 parametru New-PSSession
, Enter-PSSession
nebo Invoke-Command
rutin.
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
obsahuje proměnná 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
Popis 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 $PSSessionOption
proměnné předvoleb, použijte rutinu New-PSSessionOption
k vytvoření objektu PSSessionOption s hodnotami možností, které preferujete. Uložte výstup do proměnné s názvem $PSSessionOption
.
$PSSessionOption = New-PSSessionOption -NoCompression
Pokud chcete použít proměnnou $PSSessionOption
předvoleb v každé relaci PowerShellu, přidejte New-PSSessionOption
příkaz, který vytvoří proměnnou $PSSessionOption
do profilu PowerShellu. 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 $PSSessionOption
proměnné předvoleb.
Pokud chcete nastavit vlastní možnosti relace, použijte rutinu New-PSSessionOption
k vytvoření objektu PSSessionOption . Pak použijte PSSessionOption objekt jako hodnotu Parametr SessionOption v rutinách, které vytvářejí relaci, například New-PSSession
, Enter-PSSession
a 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. Příklad:
"$($PSStyle.Background.BrightCyan)Power$($PSStyle.Underline)$($PSStyle.Bold)Shell$($PSStyle.Reset)"
Členy Background a Foreground mají také metodu FromRgb()
pro určení 24bitové barvy.
Další informace najdete v $PSStyle
tématu about_ANSI_Terminals.
$Transcript
Start-Transcript
Používá se k zadání názvu a umístění souboru přepisu. Pokud nezadáte hodnotu parametru Path , Start-Transcript
použije se cesta v hodnotě $Transcript
globální proměnné. Pokud jste tuto proměnnou nevytvořili, Start-Transcript
uloží přepisy do následujícího umístění pomocí 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ýčtuActionPreference
: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend nebo Break.
Platné hodnoty jsou následující:
- Break – při zápisu do podrobného datového proudu zadejte ladicí program.
- Stop: Zobrazí podrobnou zprávu a chybovou zprávu a pak přestane fungovat.
- Inquire: Zobrazí podrobnou zprávu a pak zobrazí výzvu, která vás vyzve, jestli chcete pokračovat.
- Pokračovat: Zobrazí podrobnou zprávu a pak pokračuje v provádění.
- SilentlyContinue: (Výchozí) Nezobrazuje podrobnou zprávu. Pokračuje v provádění.
Pomocí podrobného běžného parametru rutiny můžete zobrazit nebo skrýt podrobné zprávy pro konkrétní příkaz. Další informace najdete v tématu about_CommonParameters.
Příklady
Tyto příklady ukazují účinek různých hodnot $VerbosePreference
a podrobného parametru pro 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 účinek hodnoty Continue . Proměnná $VerbosePreference
je nastavená na Continue (Pokračovat ) a zobrazí se zpráva.
$VerbosePreference = "Continue"
Write-Verbose -Message "Verbose message test."
VERBOSE: Verbose message test.
V tomto příkladu se používá podrobný parametr 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á je nastavená $VerbosePreference
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."
Tento příklad používá podrobný parametr 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(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á podrobný parametr 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ýčtuActionPreference
: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend nebo Break.
Platné hodnoty jsou následující:
- Přerušení – při zápisu zprávy s upozorněním zadejte ladicí program.
- Stop: Zobrazí zprávu upozornění a chybovou zprávu a pak se zastaví spuštění.
- Inquire: Zobrazí zprávu s upozorněním a zobrazí výzvu k tomu, aby oprávnění pokračovalo.
- Pokračovat: (Výchozí) Zobrazí zprávu upozornění a pak pokračuje v provádění.
- SilentlyContinue: Nezobrazuje se zpráva upozornění. Pokračuje v provádění.
Pomocí běžného parametru WarningAction 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 efekt výchozí hodnoty Continue.
$m = "This action can delete data."
Write-Warning -Message $m
WARNING: This action can delete data.
V tomto příkladu se k potlačení upozornění používá parametr WarningAction s hodnotou SilentlyContinue . 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"):
V tomto příkladu se 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í $WarningPreference
hodnotu 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
V tomto příkladu se 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 je funkce WhatIf automaticky povolena pro každý příkaz, který ho podporuje. Když je funkce WhatIf povolená, rutina hlásí očekávaný účinek příkazu, ale nespustí příkaz.
Platné hodnoty jsou následující:
- False (0, nepovoleno): (Výchozí) WhatIf není automaticky povoleno. Pokud ho chcete povolit ručně, použijte parametr WhatIf rutiny.
- True (1, povoleno): WhatIf je automaticky povoleno u libovolného příkazu, který ho podporuje. Uživatelé můžou použít parametr WhatIf s hodnotou False k jeho ručnímu zakázá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 $WhatIfPreference
proměnné nastavené na výchozí hodnotu False. Slouží Get-ChildItem
k ověření, že soubor existuje.
Remove-Item
odstraní soubor. Po odstranění souboru můžete odstranění ověřit pomocí Get-ChildItem
příkazu .
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í whatIf parametru, pokud je hodnota $WhatIfPreference
False.
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 $WhatIfPreference
proměnné nastavené na hodnotu True. Když použijete Remove-Item
k odstranění souboru, 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ž Remove-Item
se 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".
Slouží Get-ChildItem
k ověření, ž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, pokud je hodnota $WhatIfPreference
True. Používá Parametr WhatIf s hodnotou $false
. Slouží Get-ChildItem
k ověření odstranění souboru.
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 rutinyGet-Process
, která nepodporuje WhatIf a Stop-Process
která podporuje WhatIf. Hodnota $WhatIfPreference
proměnné 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í WhatIf můžete přepsat Stop-Process
pomocí parametru WhatIf s 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