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.

Olika Standardvärde
$ConfirmPreference High
$DebugPreference SilentlyContinue
$ErrorActionPreference Continue
$ErrorView ConciseView
$FormatEnumerationLimit 4
$InformationPreference SilentlyContinue
$LogCommandHealthEvent $false (inte loggad)
$LogCommandLifecycleEvent $false (inte loggad)
$LogEngineHealthEvent $true (loggad)
$LogEngineLifecycleEvent $true (loggad)
$LogProviderHealthEvent $true (loggad)
$LogProviderLifecycleEvent $true (loggad)
$MaximumHistoryCount 4096
$OFS Blankstegstecken (" ")
$OutputEncoding UTF8Encoding Objekt
$ProgressPreference Continue
$PSDefaultParameterValues @{} (tom hash-tabell)
$PSEmailServer $null (ingen)
$PSModuleAutoLoadingPreference All
$PSNativeCommandArgumentPassing Windows i Windows, Standard på icke-Windows
$PSNativeCommandUseErrorActionPreference $false
$PSSessionApplicationName 'wsman'
$PSSessionConfigurationName 'http://schemas.microsoft.com/powershell/Microsoft.PowerShell'
$PSSessionOption PSSessionOption Objekt
$PSStyle PSStyle Objekt
$Transcript $null (ingen)
$VerbosePreference SilentlyContinue
$WarningPreference Continue
$WhatIfPreference $false

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ällningsvariabeln börjar gälla endast i skript och funktioner om dessa skript eller funktioner definieras i samma omfång som det omfång där inställningen användes. 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.

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.

Eftersom de flesta cmdletar och funktioner använder standardriskvärdet ConfirmImpact för Medium och standardvärdet $ConfirmPreference är Hög sker sällan automatisk bekräftelse. Du kan dock aktivera automatisk bekräftelse genom att ändra 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 $DebugPreferencefö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änd Get-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]::InputEncodingfö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 $OutputEncodingfö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 $OutputEncodingfö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 eller Avisas 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 skriver MyModule\MyCommandimporterar PowerShell Modulen MyModule .
  • None: Inaktiverar automatisk import av moduler. Om du vill importera en modul använder du cmdleten Import-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, Standardoch 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 beteendet Standard .

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 $trueutfä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 WSMANtill 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 Anslut ionURI 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-PSSessioncmdletarna , Enter-PSSessioneller 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-PSSessionoch 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 $PSStylefinns 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 $VerbosePreferencefö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 $WarningPreferencefö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 $WarningPreferencetill 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 $WarningPreferencetill 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-ProcessWhatIf-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

Se även