about_Preference_Variables
Kort beskrivning
Variabler som anpassar beteendet för PowerShell.
Lång beskrivning
PowerShell innehåller en uppsättning variabler som gör att du kan anpassa dess beteende. Dessa inställningsvariabler fungerar som alternativen i GUI-baserade system.
Inställningsvariablerna påverkar PowerShell-driftmiljön och alla kommandon körs i miljön. Vissa cmdletar har parametrar som gör att du kan åsidosätta inställningsbeteendet för ett specifikt kommando.
I följande tabell visas inställningsvariablerna och deras standardvärden.
PowerShell innehåller följande miljövariabler som lagrar användarinställningar. Mer information om dessa miljövariabler finns i about_Environment_Variables.
$env:PSExecutionPolicyPreference
$env:PSModulePath
Kommentar
Ändringar av inställningsvariabler gäller endast i det omfång som de görs och eventuella underordnade omfång för dessa. Du kan till exempel begränsa effekterna av att ändra en inställningsvariabel till en enda funktion eller ett skript. Mer information finns i about_Scopes.
Arbeta med inställningsvariabler
I det här dokumentet beskrivs var och en av inställningsvariablerna.
Om du vill visa det aktuella värdet för en specifik inställningsvariabel skriver du variabelns namn. Följande kommando visar $ConfirmPreference
till exempel variabelns värde.
$ConfirmPreference
High
Om du vill ändra en variabels värde använder du en tilldelningssats. Följande instruktion ändrar $ConfirmPreference
till exempel parameterns värde till Medel.
$ConfirmPreference = "Medium"
De värden som du anger är specifika för den aktuella PowerShell-sessionen. Om du vill göra variabler effektiva i alla PowerShell-sessioner lägger du till dem i din PowerShell-profil. Mer information finns i about_Profiles.
Arbeta via fjärranslutning
När du kör kommandon på en fjärrdator omfattas fjärrkommandona endast av de inställningar som anges i fjärrdatorns PowerShell-klient. När du till exempel kör ett fjärrkommando avgör värdet för fjärrdatorns $DebugPreference
variabel hur PowerShell svarar på felsökning av meddelanden.
Mer information om fjärrkommandon finns i about_Remote.
$ConfirmPreference
Avgör om PowerShell automatiskt uppmanar dig att bekräfta innan du kör en cmdlet eller funktion.
Variabeln $ConfirmPreference
tar ett av uppräkningsvärdena ConfirmImpact
: Hög, Medel, Låg eller Ingen.
Cmdletar och funktioner tilldelas en risk för hög, medel eller låg.
När värdet för variabeln $ConfirmPreference
är mindre än eller lika med den risk som tilldelats en cmdlet eller funktion, uppmanar PowerShell dig automatiskt att bekräfta innan du kör cmdleten eller funktionen. Mer information om hur du tilldelar en risk till cmdletar eller funktioner finns i about_Functions_CmdletBindingAttribute.
Om värdet för variabeln $ConfirmPreference
är Ingen, uppmanar PowerShell dig aldrig automatiskt innan du kör en cmdlet eller funktion.
Om du vill ändra det bekräftande beteendet för alla cmdletar och funktioner i sessionen ändrar du $ConfirmPreference
variabelns värde.
Om du vill åsidosätta $ConfirmPreference
för ett enda kommando använder du parametern Bekräfta för en cmdlet eller funktion. Om du vill begära bekräftelse använder du -Confirm
. Om du vill förhindra bekräftelse använder du -Confirm:$false
.
Giltiga värden för $ConfirmPreference
:
- Ingen: PowerShell frågar inte automatiskt. Om du vill begära bekräftelse av ett visst kommando använder du parametern Confirm för cmdleten eller funktionen.
- Låg: PowerShell uppmanar till bekräftelse innan du kör cmdletar eller funktioner med låg, medelhög eller hög risk.
- Medel: PowerShell ber om bekräftelse innan cmdletar eller funktioner med medelhög eller hög risk körs.
- Hög: PowerShell uppmanar till bekräftelse innan du kör cmdletar eller funktioner med hög risk.
Detaljerad förklaring
PowerShell kan automatiskt be dig om bekräftelse innan du utför en åtgärd. Till exempel när cmdlet eller funktion påverkar systemet avsevärt för att ta bort data eller använda en betydande mängd systemresurser.
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"):
Uppskattningen av risken är ett attribut för cmdleten eller funktionen som kallas confirmimpact. Användare kan inte ändra det.
Cmdletar och funktioner som kan utgöra en risk för systemet har en Confirm-parameter som du kan använda för att begära eller utelämna bekräftelse för ett enda kommando.
De flesta cmdletar och funktioner behåller standardvärdet Medium för ConfirmImpact.
$ConfirmPreference
är inställt på Hög som standard. Därför är det ovanligt att kommandon automatiskt uppmanar till bekräftelse när användarna inte anger parametern Bekräfta .
Om du vill utöka den automatiska bekräftelsen till fler cmdletar och funktioner anger du värdet $ConfirmPreference
för till Medel eller Låg.
Exempel
Det här exemplet visar effekten av $ConfirmPreference
variabelns standardvärde, Hög. Värdet Hög bekräftar endast cmdletar och funktioner med hög risk. Eftersom de flesta cmdletar och funktioner är medelstora, bekräftas de inte automatiskt och Remove-Item
tar bort filen. Om du lägger -Confirm
till i kommandot uppmanas användaren att bekräfta.
$ConfirmPreference
High
Remove-Item -Path C:\temp1.txt
Använd -Confirm
för att begära bekräftelse.
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"):
I följande exempel visas effekten av att ändra värdet $ConfirmPreference
för till Medel. Eftersom de flesta cmdletar och funktioner är medelhöga risker bekräftas de automatiskt. Om du vill ignorera bekräftelseprompten för ett enda kommando använder du parametern Bekräfta med värdet $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
Avgör hur PowerShell svarar på felsökning av meddelanden som genereras av ett skript, en cmdlet eller en provider eller ett Write-Debug
kommando på kommandoraden.
Variabeln $DebugPreference
tar ett av ActionPreference
uppräkningsvärdena: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend eller Break.
Vissa cmdletar visar felsökningsmeddelanden, som vanligtvis är tekniska meddelanden som är utformade för programmerare och tekniker för teknisk support. Som standard visas inte felsökningsmeddelanden, men du kan visa felsökningsmeddelanden genom att ändra värdet $DebugPreference
för .
Du kan använda den vanliga parametern Felsöka för en cmdlet för att visa eller dölja felsökningsmeddelandena för ett visst kommando. Mer information finns i about_CommonParameters.
De giltiga värdena är följande:
- Break – Ange felsökningsprogrammet när ett fel inträffar eller när ett undantag utlöses.
- Stopp: Visar felsökningsmeddelandet och slutar köras. Skriver ett fel till konsolen.
- Fråga: Visar felsökningsmeddelandet och frågar dig om du vill fortsätta.
- Fortsätt: Visar felsökningsmeddelandet och fortsätter med körningen.
- TystKontinuer: (standard) Ingen effekt. Felsökningsmeddelandet visas inte och körningen fortsätter utan avbrott.
Om du lägger till den vanliga parametern Felsök i ett kommando, när kommandot har konfigurerats för att generera ett felsökningsmeddelande, ändras värdet för variabeln $DebugPreference
till Fortsätt.
Exempel
I följande exempel visas effekten av att ändra värdena $DebugPreference
för när ett Write-Debug
kommando anges på kommandoraden.
Ändringen påverkar alla felsökningsmeddelanden, inklusive meddelanden som genereras av cmdletar och skript. Exemplen visar parametern Felsökning , som visar eller döljer felsökningsmeddelanden som är relaterade till ett enda kommando.
Det här exemplet visar effekten av $DebugPreference
variabelns standardvärde, SilentlyContinue. Som standard visas inte cmdletens Write-Debug
felsökningsmeddelande och bearbetningen fortsätter. När parametern Debug används åsidosätter den inställningen för ett enda kommando. Felsökningsmeddelandet visas.
$DebugPreference
SilentlyContinue
Write-Debug -Message "Hello, World"
Write-Debug -Message "Hello, World" -Debug
DEBUG: Hello, World
Det här exemplet visar effekten av $DebugPreference
med värdet Fortsätt . Felsökningsmeddelandet visas och kommandot fortsätter att bearbetas.
$DebugPreference = "Continue"
Write-Debug -Message "Hello, World"
DEBUG: Hello, World
I det här exemplet används parametern Debug med värdet $false
för för att utelämna meddelandet för ett enda kommando. Felsökningsmeddelandet visas inte.
Write-Debug -Message "Hello, World" -Debug:$false
Det här exemplet visar effekten av $DebugPreference
att ställas in på värdet Stoppa . Felsökningsmeddelandet visas och kommandot stoppas.
$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"
I det här exemplet används parametern Debug med värdet $false
för för att utelämna meddelandet för ett enda kommando. Felsökningsmeddelandet visas inte och bearbetningen stoppas inte.
Write-Debug -Message "Hello, World" -Debug:$false
Det här exemplet visar effekten av $DebugPreference
att ställas in på värdet Fråga . Felsökningsmeddelandet visas och användaren uppmanas att bekräfta det.
$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"):
I det här exemplet används parametern Debug med värdet $false
för för att utelämna meddelandet för ett enda kommando. Felsökningsmeddelandet visas inte och bearbetningen fortsätter.
Write-Debug -Message "Hello, World" -Debug:$false
$ErrorActionPreference
Avgör hur PowerShell svarar på ett icke-avslutande fel, ett fel som inte stoppar cmdlet-bearbetningen. Till exempel på kommandoraden eller i ett skript, cmdlet eller provider, till exempel de fel som genereras av cmdleten Write-Error
.
Variabeln $ErrorActionPreference
tar ett av ActionPreference
uppräkningsvärdena: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend eller Break.
Du kan använda en cmdlets errorAction common-parameter för att åsidosätta inställningen för ett specifikt kommando.
De giltiga värdena är följande:
- Break – Ange felsökningsprogrammet när ett fel inträffar eller när ett undantag utlöses.
- Fortsätt: (Standard) Visar felmeddelandet och fortsätter att köras.
- Ignorera: Undertrycker felmeddelandet och fortsätter att köra kommandot. Värdet Ignorera är avsett för användning per kommando, inte för användning som sparad inställning. Ignorera är inte ett giltigt värde för variabeln
$ErrorActionPreference
. - Fråga: Visar felmeddelandet och frågar dig om du vill fortsätta.
- TystKontinuera: Ingen effekt. Felmeddelandet visas inte och körningen fortsätter utan avbrott.
- Stopp: Visar felmeddelandet och slutar köras. Förutom det genererade felet genererar stoppvärdet ett ActionPreferenceStopException-objekt till felströmmen.
- Pausa: Inaktiverar automatiskt ett arbetsflödesjobb för att möjliggöra ytterligare undersökning. Efter undersökningen kan arbetsflödet återupptas. Suspend-värdet är avsett för användning per kommando, inte för användning som sparad inställning. Paus är inte ett giltigt värde för variabeln
$ErrorActionPreference
.
$ErrorActionPreference
och parametern ErrorAction påverkar inte hur PowerShell svarar på avslutande fel som stoppar cmdlet-bearbetning. Mer information om den vanliga parametern ErrorAction finns i about_CommonParameters.
Många interna kommandon skriver till stderr
som en alternativ ström för ytterligare information. Det här beteendet kan orsaka förvirring när du tittar igenom fel eller om ytterligare utdatainformation kan gå förlorad för användaren om $ErrorActionPreference
den är inställd på ett tillstånd som stänger av utdata.
Från och med PowerShell 7.2 skrivs inte felposter som omdirigeras från interna kommandon, till exempel när du använder omdirigeringsoperatorer (2>&1
), till variabeln $Error
och inställningsvariabeln $ErrorActionPreference
påverkar inte de omdirigerade utdata.
PowerShell 7.3 har lagt till en experimentell funktion som gör att du kan styra hur meddelanden som skrivs till stderr
hanteras.
Mer information finns i $PSNativeCommandUseErrorActionPreference.
Exempel
De här exemplen visar effekten av variabelns $ErrorActionPreference
olika värden. Parametern ErrorAction används för att åsidosätta $ErrorActionPreference
värdet.
I det $ErrorActionPreference
här exemplet visas standardvärdet Fortsätt. Ett icke-avslutande fel genereras. Meddelandet visas och bearbetningen fortsätter.
# 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
Det här exemplet visar $ErrorActionPreference
standardvärdet, Fråga. Ett fel genereras och en uppmaning om åtgärd visas.
# 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"):
I det $ErrorActionPreference
här exemplet visas inställningen SilentlyContinue.
Felmeddelandet ignoreras.
# 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
I det $ErrorActionPreference
här exemplet visas inställningen Stoppa. Den visar också det extra objekt som genereras till variabeln $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
Avgör visningsformatet för felmeddelanden i PowerShell.
Variabeln $ErrorView
tar ett av uppräkningsvärdena ErrorView
: NormalView, CategoryView eller ConciseView.
De giltiga värdena är följande:
ConciseView: (Standard) Ger ett kortfattat felmeddelande och en omstrukturerad vy för avancerade modulbyggare. Från och med PowerShell 7.2 är utdata ett felmeddelande om felet kommer från kommandoraden eller en skriptmodul. Annars får du ett felmeddelande med flera rader som innehåller felet och en pekare till felet som visar var det inträffar på den raden. Om terminalen stöder virtuell terminal används ANSI-färgkoder för att ge färgaccenter. Dekorfärgen kan ändras på
$Host.PrivateData.ErrorAccentColor
. AnvändGet-Error
cmdlet för en omfattande detaljerad vy över det fullständigt kvalificerade felet, inklusive inre undantag.ConciseView lades till i PowerShell 7.
NormalView: En detaljerad vy som utformats för de flesta användare. Består av en beskrivning av felet och namnet på det objekt som ingår i felet.
CategoryView: En kortfattad, strukturerad vy utformad för produktionsmiljöer. Formatet är följande:
{Category}: ({TargetName}:{TargetType}):[{Activity}], {Reason}
Mer information om fälten i CategoryView finns i klassen ErrorCategoryInfo.
Exempel
Det här exemplet visar hur ett fel visas när värdet $ErrorView
för är standardvärdet ConciseView. Get-ChildItem
används för att hitta en obefintlig katalog.
Get-ChildItem -path 'C:\NoRealDirectory'
Get-ChildItem: Can't find path 'C:\NoRealDirectory' because it doesn't exist.
Det här exemplet visar hur ett fel visas när värdet $ErrorView
för är standardvärdet ConciseView. Script.ps1
körs och genererar ett fel från Get-Item
-instruktionen.
./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.
Det här exemplet visar hur ett fel visas när värdet $ErrorView
för ändras till NormalView. Get-ChildItem
används för att hitta en fil som inte finns.
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
Det här exemplet visar hur samma fel visas när värdet $ErrorView
för ändras till CategoryView.
$ErrorView = "CategoryView"
Get-ChildItem -Path C:\nofile.txt
ObjectNotFound: (C:\nofile.txt:String) [Get-ChildItem], ItemNotFoundException
Det här exemplet visar att värdet för $ErrorView
endast påverkar felvisningen. Den ändrar inte strukturen för felobjektet som lagras i den $Error
automatiska variabeln. Information om den automatiska variabeln finns i $Error
about_automatic_variables.
Följande kommando tar objektet ErrorRecord som är associerat med det senaste felet i felmatrisen, element 0 och formaterar egenskaperna för objektet i en lista.
$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
Avgör hur många uppräknade objekt som ingår i en visning. Den här variabeln påverkar inte de underliggande objekten, bara visningen. När värdet $FormatEnumerationLimit
för är färre än antalet uppräknade objekt lägger PowerShell till en ellips (...
) för att visa objekt som inte visas.
Giltiga värden: Heltal (Int32
)
Standardvärde: 4
Exempel
Det här exemplet visar hur du använder variabeln $FormatEnumerationLimit
för att förbättra visningen av uppräknade objekt.
Kommandot i det här exemplet genererar en tabell som visar alla tjänster som körs på datorn i två grupper: en för tjänster som körs och en för stoppade tjänster. Det använder ett Get-Service
kommando för att hämta alla tjänster och skickar sedan resultatet via pipelinen till cmdleten Group-Object
, som grupperar resultatet efter tjänststatus.
Resultatet är en tabell som visar statusen i kolumnen Namn och processerna i kolumnen Grupp . Om du vill ändra kolumnetiketterna använder du en hash-tabell, se about_Hash_Tables. Mer information finns i exemplen i Format-Table.
Hitta det aktuella värdet för $FormatEnumerationLimit
.
$FormatEnumerationLimit
4
Visa en lista över alla tjänster grupperade efter Status. Det finns högst fyra tjänster i kolumnen Grupp för varje status eftersom $FormatEnumerationLimit
har värdet 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...}
Öka värdet $FormatEnumerationLimit
för till 1 000 om du vill öka antalet objekt i listan. Använd Get-Service
och Group-Object
för att visa tjänsterna.
$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...
Använd Format-Table
med parametern Wrap för att visa listan över tjänster.
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
Med $InformationPreference
variabeln kan du ange inställningar för informationsström som du vill ska visas för användarna. Mer specifikt informationsmeddelanden som du har lagt till i kommandon eller skript genom att lägga till cmdleten Write-Information . Om parametern InformationAction används åsidosätter dess värde variabelns $InformationPreference
värde.
Write-Information
introducerades i PowerShell 5.0.
Variabeln $InformationPreference
tar ett av ActionPreference
uppräkningsvärdena: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend eller Break.
De giltiga värdena är följande:
- Break – Ange felsökningsprogrammet när du skriver till informationsströmmen.
- Stopp: Stoppar ett kommando eller skript vid en förekomst av
Write-Information
kommandot. - Fråga: Visar det informationsmeddelande som du anger i ett
Write-Information
kommando och frågar sedan om du vill fortsätta. - Fortsätt: Visar informationsmeddelandet och fortsätter att köras.
- TystKontinuer: (standard) Ingen effekt. Informationsmeddelandena visas inte och skriptet fortsätter utan avbrott.
$Log*Händelse
Variablerna log*händelseinställning avgör vilka typer av händelser som skrivs till PowerShell-händelseloggen i Loggboken. Som standard loggas endast motor- och providerhändelser. Men du kan använda variablerna log*händelseinställningar för att anpassa loggen, till exempel loggningshändelser om kommandon.
Variablerna log*händelseinställning är följande:
$LogCommandHealthEvent
: Loggar fel och undantag vid initiering och bearbetning av kommandon. Standardvärdet är$false
(inte loggat).$LogCommandLifecycleEvent
: Loggar start och stopp av kommandon och kommandopipelines och säkerhetsfel i kommandoidentifiering. Standardvärdet är$false
(inte loggat).$LogEngineHealthEvent
: Loggar fel och fel i sessioner. Standardvärdet är$true
(loggat).$LogEngineLifecycleEvent
: Loggar öppnandet och stängningen av sessioner. Standardvärdet är$true
(loggat).$LogProviderHealthEvent
: Loggar providerfel, till exempel läs- och skrivfel, uppslagsfel och anropsfel. Standardvärdet är$true
(loggat).$LogProviderLifecycleEvent
: Loggar som lägger till och tar bort PowerShell-leverantörer. Standardvärdet är$true
(loggat). Information om PowerShell-leverantörer finns i about_Providers.
Om du vill aktivera en Log*-händelse skriver du variabeln med värdet $true
, till exempel:
$LogCommandLifeCycleEvent = $true
Om du vill inaktivera en händelsetyp skriver du variabeln med värdet $false
, till exempel:
$LogCommandLifeCycleEvent = $false
De händelser som du aktiverar gäller endast för den aktuella PowerShell-konsolen. Om du vill tillämpa konfigurationen på alla konsoler sparar du variabelinställningarna i PowerShell-profilen. Mer information finns i about_Profiles.
$MaximumHistoryCount
Avgör hur många kommandon som sparas i kommandohistoriken för den aktuella sessionen.
Giltiga värden: 1 – 32768 (Int32
)
Standard: 4096
Om du vill fastställa antalet kommandon som sparats i kommandohistoriken skriver du:
(Get-History).Count
Om du vill se kommandona som sparats i sessionshistoriken använder du cmdleten Get-History
. Mer information finns i about_History.
$OFS
Utdatafältavgränsaren (OFS) anger det tecken som separerar elementen i en matris som konverteras till en sträng.
Giltiga värden: Valfri sträng.
Standard: Blanksteg
Som standard finns inte variabeln $OFS
och utdatafilavgränsaren är ett blanksteg, men du kan lägga till den här variabeln och ange den till valfri sträng. Du kan ändra värdet $OFS
för i sessionen genom att $OFS="<value>"
skriva .
Kommentar
Om du förväntar dig standardvärdet för ett blanksteg (" "
) i skriptet, modulen eller konfigurationsutdata bör du vara försiktig så att $OFS
standardvärdet inte har ändrats någon annanstans i koden.
Exempel
Det här exemplet visar att ett blanksteg används för att separera värdena när en matris konverteras till en sträng. I det här fallet lagras en matris med heltal i en variabel och sedan omvandlas variabeln som en sträng.
$array = 1,2,3,4
[string]$array
1 2 3 4
Om du vill ändra avgränsaren lägger du till variabeln $OFS
genom att tilldela den ett värde.
Variabeln måste ha namnet $OFS
.
$OFS = "+"
[string]$array
1+2+3+4
Om du vill återställa standardbeteendet kan du tilldela ett blanksteg (" "
) till värdet $OFS
för eller ta bort variabeln. Följande kommandon tar bort variabeln och kontrollerar sedan att avgränsaren är ett blanksteg.
Remove-Variable OFS
[string]$array
1 2 3 4
$OutputEncoding
Avgör vilken teckenkodningsmetod som PowerShell använder när data skickas till inbyggda program.
Kommentar
I de flesta scenarier bör värdet för $OutputEncoding
justeras till värdet [Console]::InputEncoding
för .
Giltiga värden är följande: Objekt som härleds från en kodningsklass, till exempel ASCIIEncoding, UTF7Encoding, UTF8Encoding, UTF32Encoding och UnicodeEncoding.
Standard: UTF8Kodningsobjekt .
Exempel
Det första kommandot hittar värdet $OutputEncoding
för . Eftersom värdet är ett kodningsobjekt visar du endast dess encodingName-egenskap .
$OutputEncoding.EncodingName
I de återstående exemplen används följande PowerShell-skript som sparats för hexdump.ps1
att illustrera beteendet $OutputEncoding
för .
$inputStream = [Console]::OpenStandardInput()
try {
$buffer = [byte[]]::new(1024)
$read = $inputStream.Read($buffer, 0, $buffer.Length)
Format-Hex -InputObject $buffer -Count $read
} finally {
$inputStream.Dispose()
}
I följande exempel visas hur strängvärdet café
kodas till byte när det skickas till hexdump.ps1
skapat ovan. Det visar att strängvärdet kodas med hjälp av UTF8Encoding-schemat.
'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�
I följande exempel visas hur byte ändras när kodningen ändras till 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
Avgör hur PowerShell svarar på förloppsuppdateringar som genereras av ett skript, en cmdlet eller en provider, till exempel förloppsstaplarna som genereras av cmdleten Write-Progress . Cmdleten Write-Progress
skapar förloppsstaplar som visar ett kommandos status.
Variabeln $ProgressPreference
tar ett av ActionPreference
uppräkningsvärdena: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend eller Break.
De giltiga värdena är följande:
- Break – Ange felsökningsprogrammet när du skriver till förloppsströmmen.
- Stopp: Visar inte förloppsindikatorn. I stället visas ett felmeddelande och slutar köras.
- Fråga: Visar inte förloppsindikatorn. Uppmanar till behörighet att fortsätta. Om du svarar med
Y
ellerA
visas förloppsindikatorn. - Fortsätt: (Standard) Visar förloppsindikatorn och fortsätter med körningen.
- TystKontinuera: Kör kommandot, men visar inte förloppsindikatorn.
$PSDefaultParameterValues
Anger standardvärden för parametrarna för cmdletar och avancerade funktioner.
Värdet $PSDefaultParameterValues
för är en hash-tabell där nyckeln består av cmdletens namn och parameternamn avgränsade med ett kolon (:
). Värdet är ett anpassat standardvärde som du anger.
$PSDefaultParameterValues
introducerades i PowerShell 3.0.
Mer information om den här inställningsvariabeln finns i about_Parameters_Default_Values.
$PSEmailServer
Anger standardservern för e-post som används för att skicka e-postmeddelanden. Den här inställningsvariabeln används av cmdletar som skickar e-post, till exempel cmdleten Send-MailMessage .
$PSModuleAutoloadingPreference
Aktiverar och inaktiverar automatisk import av moduler i sessionen. Variabeln $PSModuleAutoloadingPreference
finns inte som standard. Standardbeteendet när variabeln inte definieras är samma som $PSModuleAutoloadingPreference = 'All'
.
Om du vill importera en modul automatiskt hämtar eller använder du ett kommando som finns i modulen.
Variabeln $PSModuleAutoloadingPreference
tar ett av uppräkningsvärdena PSModuleAutoLoadingPreference
:
All
: Moduler importeras automatiskt vid första användningen.ModuleQualified
: Moduler importeras endast automatiskt när en användare använder det modulkvalificerade namnet på ett kommando i modulen. Om användaren till exempel skriverMyModule\MyCommand
importerar PowerShell Modulen MyModule .None
: Inaktiverar automatisk import av moduler. Om du vill importera en modul använder du cmdletenImport-Module
.
Mer information om automatisk import av moduler finns i about_Modules.
$PSNativeCommandArgumentPassing
PowerShell 7.3 ändrade hur kommandoraden parsas för interna kommandon.
Den nya $PSNativeCommandArgumentPassing
inställningsvariabeln styr det här beteendet.
Varning
Det nya beteendet är en icke-bakåtkompatibel ändring från det tidigare beteendet. Detta kan bryta skript och automatisering som kringgår de olika problemen när inbyggda program anropas.
Med den automatiska variabeln $PSNativeCommandArgumentPassing
kan du välja beteende vid körning. Giltiga värden är Legacy
, Standard
och Windows
. Legacy
är det historiska beteendet.
Variabeln $PSNativeCommandArgumentPassing
definieras som standard, men värdet är plattformsspecifikt.
- I Windows är inställningen inställd på
Windows
. - På icke-Windows-plattformar är inställningen inställd på
Standard
. - Om du har tagit bort variabeln
$PSNativeCommandArgumentPassing
använder PowerShell beteendetStandard
.
Beteendet Windows
för och Standard
läget är detsamma förutom att PowerShell i Windows
läge använder Legacy
beteendet för argument som skickas när du kör följande filer.
cmd.exe
cscript.exe
find.exe
sqlcmd.exe
wscript.exe
- Filer som slutar med:
.bat
.cmd
.js
.vbs
.wsf
$PSNativeCommandArgumentPassing
Om är inställt på antingen Legacy
eller Standard
, söker parsern inte efter dessa filer. Exempel på det nya beteendet finns i about_Parsing.
PowerShell 7.3 har också lagt till möjligheten att spåra parameterbindning för interna kommandon. Mer information finns i Trace-Command.
$PSNativeCommandUseErrorActionPreference
När $PSNativeCommandUseErrorActionPreference
är $true
utfärdar interna kommandon med slutkoder som inte är noll fel enligt $ErrorActionPreference
.
Vissa interna kommandon, till exempel robocopy , använder slutkoder som inte är noll för att representera annan information än fel. I dessa fall kan du tillfälligt inaktivera beteendet och förhindra att slutkoder som inte är noll utfärdar fel.
& {
# 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"
}
}
I det här exemplet ändras variabeln $PSNativeCommandUseErrorActionPreference
i en scriptblock. Ändringen är lokal för scriptblock. När skriptblocket avslutas återgår variabeln till sitt tidigare värde.
$PSSessionApplicationName
Anger standardprogrammets namn för ett fjärrkommando som använder WS-Management-teknik (Web Services for Management). Mer information finns i Om Fjärrhantering i Windows.
Systemets standardprogramnamn är WSMAN
, men du kan använda den här inställningsvariabeln för att ändra standardvärdet.
Programnamnet är den sista noden i en anslutnings-URI. Programnamnet i följande exempel-URI är WSMAN
till exempel .
http://Server01:8080/WSMAN
Standardprogrammets namn används när fjärrkommandot inte anger någon anslutnings-URI eller ett programnamn.
WinRM-tjänsten använder programnamnet för att välja en lyssnare som ska betjäna anslutningsbegäran. Parameterns värde ska matcha värdet för egenskapen URLPrefix för en lyssnare på fjärrdatorn.
Om du vill åsidosätta systemstandarden och värdet för den här variabeln och välja ett annat programnamn för en viss session använder du parametrarna ConnectionURI eller ApplicationName för cmdletarna New-PSSession, Enter-PSSession eller Invoke-Command.
Inställningsvariabeln $PSSessionApplicationName
anges på den lokala datorn, men den anger en lyssnare på fjärrdatorn. Om det programnamn som du anger inte finns på fjärrdatorn misslyckas kommandot för att upprätta sessionen.
$PSSessionConfigurationName
Anger standardkonfigurationen för sessioner som används för att skapa nya sessioner i den aktuella sessionen.
Den här inställningsvariabeln anges på den lokala datorn, men den anger en sessionskonfiguration som finns på fjärrdatorn.
Värdet för variabeln $PSSessionConfigurationName
är en fullständigt kvalificerad resurs-URI.
Standardvärdet http://schemas.microsoft.com/PowerShell/microsoft.PowerShell
anger konfigurationen av Microsoft.PowerShell-sessionen på fjärrdatorn.
Om du bara anger ett konfigurationsnamn förbereds följande schema-URI:
http://schemas.microsoft.com/PowerShell/
Du kan åsidosätta standardinställningen och välja en annan sessionskonfiguration för en viss session med hjälp av parametern ConfigurationName för New-PSSession
cmdletarna , Enter-PSSession
eller Invoke-Command
.
Du kan när som helst ändra värdet för den här variabeln. Kom ihåg att den sessionskonfiguration som du väljer måste finnas på fjärrdatorn. Om den inte gör det misslyckas kommandot för att skapa en session som använder sessionskonfigurationen.
Den här inställningsvariabeln avgör inte vilka lokala sessionskonfigurationer som används när fjärranvändare skapar en session som ansluter till den här datorn. Du kan dock använda behörigheterna för de lokala sessionskonfigurationerna för att avgöra vilka användare som kan använda dem.
$PSSessionOption
Etablerar standardvärdena för avancerade användaralternativ i en fjärrsession. Dessa alternativinställningar åsidosätter systemets standardvärden för sessionsalternativ.
Variabeln $PSSessionOption
innehåller ett PSSessionOption-objekt . Mer information finns i System.Management.Automation.Remoting.PSSessionOption.
Varje egenskap för objektet representerar ett sessionsalternativ. Egenskapen NoCompression omvandlar till exempel datakomprimering under sessionen.
Som standard innehåller variabeln $PSSessionOption
ett PSSessionOption-objekt med standardvärdena för alla alternativ, enligt nedan.
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
Beskrivningar av dessa alternativ och mer information finns i New-PSSessionOption. Mer information om fjärrkommandon och sessioner finns i about_Remote och about_PSSessions.
Om du vill ändra värdet för $PSSessionOption
inställningsvariabeln använder du cmdleten New-PSSessionOption
för att skapa ett PSSessionOption-objekt med de alternativvärden som du föredrar. Spara utdata i en variabel med namnet $PSSessionOption
.
$PSSessionOption = New-PSSessionOption -NoCompression
Om du vill använda inställningsvariabeln $PSSessionOption
i varje PowerShell-session lägger du till ett New-PSSessionOption
kommando som skapar variabeln $PSSessionOption
i din PowerShell-profil. Mer information finns i about_Profiles.
Du kan ange anpassade alternativ för en viss fjärrsession. De alternativ som du anger har företräde framför systemets standardvärden och värdet för $PSSessionOption
inställningsvariabeln.
Om du vill ange anpassade sessionsalternativ använder du cmdleten New-PSSessionOption
för att skapa ett PSSessionOption-objekt . Använd sedan PSSessionOption-objektet som värdet för parametern SessionOption i cmdletar som skapar en session, till exempel New-PSSession
, Enter-PSSession
och Invoke-Command
.
$PSStyle
Från och med PowerShell 7.2 kan du nu komma åt den $PSStyle
automatiska variabeln för att visa och ändra återgivningen av ANSI-strängutdata. $PSStyle
är en instans av KLASSEN PSStyle . Medlemmarna i den här klassen definierar strängar som innehåller ANSI-escape-sekvenser som styr återgivningen av text i terminalen.
Basmedlemmarna returnerar strängar av ANSI-escape-sekvenser som mappats till deras namn. Värdena kan anges för att tillåta anpassning. Egenskapsnamnen gör det enklare för dig att skapa dekorerade strängar med hjälp av tabbavslut. Till exempel:
"$($PSStyle.Background.BrightCyan)Power$($PSStyle.Underline)$($PSStyle.Bold)Shell$($PSStyle.Reset)"
Medlemmarna i Background och Foreground har också en FromRgb()
metod för att ange 24-bitars färg.
Mer information om $PSStyle
finns i about_ANSI_Terminals.
$Transcript
Används av Start-Transcript
för att ange namn och plats för avskriftsfilen. Om du inte anger något värde för parametern Start-Transcript
Path använder du sökvägen i värdet för den $Transcript
globala variabeln. Om du inte har skapat den här variabeln Start-Transcript
lagrar du avskrifterna på följande plats med standardnamnet:
- I Windows:
$HOME\Documents
- I Linux eller macOS:
$HOME
Standardfilnamnet är: PowerShell_transcript.<computername>.<random>.<timestamp>.txt
.
$VerbosePreference
Avgör hur PowerShell svarar på utförliga meddelanden som genereras av ett skript, en cmdlet eller en provider, till exempel de meddelanden som genereras av cmdleten Write-Verbose . Utförliga meddelanden beskriver de åtgärder som utförs för att köra ett kommando.
Som standard visas inte utförliga meddelanden, men du kan ändra det här beteendet genom att ändra värdet $VerbosePreference
för .
Variabeln $VerbosePreference
tar ett av ActionPreference
uppräkningsvärdena: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend eller Break.
De giltiga värdena är följande:
- Break – Ange felsökaren när du skriver till den utförliga strömmen.
- Stopp: Visar det utförliga meddelandet och ett felmeddelande och slutar sedan att köras.
- Fråga: Visar det utförliga meddelandet och visar sedan en fråga som frågar dig om du vill fortsätta.
- Fortsätt: Visar det utförliga meddelandet och fortsätter sedan med körningen.
- TystKontinuerligt: (standard) Visar inte det utförliga meddelandet. Fortsätter att köras.
Du kan använda den utförliga gemensamma parametern för en cmdlet för att visa eller dölja utförliga meddelanden för ett visst kommando. Mer information finns i about_CommonParameters.
Exempel
De här exemplen visar effekten av de olika värdena $VerbosePreference
för och den utförliga parametern för att åsidosätta inställningsvärdet.
Det här exemplet visar effekten av värdet SilentlyContinue , som är standardvärdet. Kommandot använder parametern Meddelande , men skriver inte ett meddelande till PowerShell-konsolen.
Write-Verbose -Message "Verbose message test."
När den utförliga parametern används skrivs meddelandet.
Write-Verbose -Message "Verbose message test." -Verbose
VERBOSE: Verbose message test.
Det här exemplet visar effekten av värdet Fortsätt . Variabeln $VerbosePreference
är inställd på Fortsätt och meddelandet visas.
$VerbosePreference = "Continue"
Write-Verbose -Message "Verbose message test."
VERBOSE: Verbose message test.
I det här exemplet används parametern Verbose med värdet $false
som åsidosätter värdet Fortsätt. Meddelandet visas inte.
Write-Verbose -Message "Verbose message test." -Verbose:$false
I det här exemplet visas effekten av värdet Stoppa . Variabeln $VerbosePreference
är inställd på Stoppa och meddelandet visas. Kommandot har stoppats.
$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."
I det här exemplet används verbose-parametern med ett värde $false
som åsidosätter värdet Stopp. Meddelandet visas inte.
Write-Verbose -Message "Verbose message test." -Verbose:$false
Det här exemplet visar effekten av inquire-värdet . Variabeln $VerbosePreference
är inställd på Fråga. Meddelandet visas och användaren uppmanas att bekräfta.
$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"):
I det här exemplet används den utförliga parametern med ett värde som $false
åsidosätter inquire-värdet . Användaren uppmanas inte och meddelandet visas inte.
Write-Verbose -Message "Verbose message test." -Verbose:$false
$WarningPreference
Avgör hur PowerShell svarar på varningsmeddelanden som genereras av ett skript, en cmdlet eller en provider, till exempel de meddelanden som genereras av cmdleten Write-Warning .
Som standard visas varningsmeddelanden och körningen fortsätter, men du kan ändra det här beteendet genom att ändra värdet $WarningPreference
för .
Variabeln $WarningPreference
tar ett av ActionPreference
uppräkningsvärdena: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend eller Break.
De giltiga värdena är följande:
- Break – Ange felsökningsprogrammet när ett varningsmeddelande skrivs.
- Stopp: Visar varningsmeddelandet och ett felmeddelande och slutar sedan att köras.
- Fråga: Visar varningsmeddelandet och ber sedan om behörighet att fortsätta.
- Fortsätt: (Standard) Visar varningsmeddelandet och fortsätter sedan att köras.
- TystKontinuerligt: Visar inte varningsmeddelandet. Fortsätter att köras.
Du kan använda den vanliga parametern WarningAction för en cmdlet för att avgöra hur PowerShell svarar på varningar från ett visst kommando. Mer information finns i about_CommonParameters.
Exempel
De här exemplen visar effekten av de olika värdena för $WarningPreference
.
Parametern WarningAction åsidosätter inställningsvärdet.
I det här exemplet visas effekten av standardvärdet Fortsätt.
$m = "This action can delete data."
Write-Warning -Message $m
WARNING: This action can delete data.
I det här exemplet används parametern WarningAction med värdet SilentlyContinue för att ignorera varningen. Meddelandet visas inte.
$m = "This action can delete data."
Write-Warning -Message $m -WarningAction SilentlyContinue
I det här exemplet ändras variabeln $WarningPreference
till värdet SilentlyContinue . Meddelandet visas inte.
$WarningPreference = "SilentlyContinue"
$m = "This action can delete data."
Write-Warning -Message $m
I det här exemplet används parametern WarningAction för att stoppa när en varning genereras.
$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
I det här exemplet ändras variabeln $WarningPreference
till värdet Fråga . Användaren uppmanas att bekräfta.
$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"):
I det här exemplet används parametern WarningAction med värdet SilentlyContinue. Kommandot fortsätter att köras och inget meddelande visas.
$m = "This action can delete data."
Write-Warning -Message $m -WarningAction SilentlyContinue
Det här exemplet ändrar värdet $WarningPreference
till Stoppa.
$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
I det här exemplet används WarningAction med värdet Fråga . Användaren tillfrågas när en varning inträffar.
$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
Avgör om WhatIf aktiveras automatiskt för varje kommando som stöder det. När WhatIf är aktiverat rapporterar cmdleten den förväntade effekten av kommandot, men kör inte kommandot.
De giltiga värdena är följande:
- False (0, inte aktiverat): (Standard) WhatIf aktiveras inte automatiskt. Om du vill aktivera den manuellt använder du cmdletens WhatIf-parameter .
- Sant (1, aktiverat): WhatIf aktiveras automatiskt på alla kommandon som stöder det. Användare kan använda parametern WhatIf med värdet False för att inaktivera den manuellt, till exempel
-WhatIf:$false
.
Exempel
De här exemplen visar effekten av de olika värdena för $WhatIfPreference
.
De visar hur du använder parametern WhatIf för att åsidosätta inställningsvärdet för ett specifikt kommando.
I det här exemplet visas effekten av variabeln $WhatIfPreference
inställd på standardvärdet False. Använd Get-ChildItem
för att kontrollera att filen finns.
Remove-Item
tar bort filen. När filen har tagits bort kan du verifiera borttagningen med 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
Det här exemplet visar effekten av att använda parametern WhatIf när värdet $WhatIfPreference
för är False.
Kontrollera att filen finns.
Get-ChildItem -Path .\test2.txt
Directory: C:\Test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2/28/2019 17:06 12 test2.txt
Använd parametern WhatIf för att fastställa resultatet av att försöka ta bort filen.
Remove-Item -Path .\test2.txt -WhatIf
What if: Performing the operation "Remove File" on target "C:\Test\test2.txt".
Kontrollera att filen inte har tagits bort.
Get-ChildItem -Path .\test2.txt
Directory: C:\Test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2/28/2019 17:06 12 test2.txt
Det här exemplet visar effekten av variabeln $WhatIfPreference
som anges till värdet True. När du använder Remove-Item
för att ta bort en fil visas filens sökväg, men filen tas inte bort.
Försök att ta bort en fil. Ett meddelande visas om vad som skulle hända om Remove-Item
den kördes, men filen tas inte bort.
$WhatIfPreference = "True"
Remove-Item -Path .\test2.txt
What if: Performing the operation "Remove File" on target "C:\Test\test2.txt".
Använd Get-ChildItem
för att kontrollera att filen inte har tagits bort.
Get-ChildItem -Path .\test2.txt
Directory: C:\Test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2/28/2019 17:06 12 test2.txt
Det här exemplet visar hur du tar bort en fil när värdet $WhatIfPreference
för är Sant. Den använder parametern WhatIf med värdet $false
. Använd Get-ChildItem
för att kontrollera att filen har tagits bort.
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
Följande är exempel på cmdleten Get-Process
som inte stöder WhatIf och Stop-Process
som stöder WhatIf. Variabelns $WhatIfPreference
värde är Sant.
Get-Process
stöder inte WhatIf. När kommandot körs visas Winword-processen .
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
stöder WhatIf. Winword-processen stoppas inte.
Stop-Process -Name Winword
What if: Performing the operation "Stop-Process" on target "WINWORD (15024)".
Du kan åsidosätta Stop-Process
WhatIf-beteendet med hjälp av parametern WhatIf med värdet $false
. Winword-processen stoppas.
Stop-Process -Name Winword -WhatIf:$false
Om du vill kontrollera att Winword-processen har stoppats använder du 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