Om inställningsvariabler

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. I många fall har cmdletarna parametrar som du kan använda för att åsidosätta inställningsbeteendet för ett specifikt kommando.

I följande tabell visas inställningsvariablerna och deras standardvärden.

Variabel Standardvärde
$ConfirmPreference Högt
$DebugPreference SilentlyContinue
$ErrorActionPreference Fortsätt
$ErrorView NormalView
$FormatEnumerationLimit 4
$InformationPreference SilentlyContinue
$LogCommandHealthEvent Falskt (inte loggat)
$LogCommandLifecycleEvent Falskt (inte loggat)
$LogEngineHealthEvent Sant (loggat)
$LogEngineLifecycleEvent Sant (loggat)
$LogProviderLifecycleEvent Sant (loggat)
$LogProviderHealthEvent Sant (loggat)
$MaximumHistoryCount 4096
$OFS (Blankstegstecken (" "))
$OutputEncoding UTF8Kodningsobjekt
$ProgressPreference Fortsätt
$PSDefaultParameterValues (Ingen – tom hashtabell)
$PSEmailServer (Ingen)
$PSModuleAutoLoadingPreference Alla
$PSSessionApplicationName wsman
$PSSessionConfigurationName https://schemas.microsoft.com/powershell/Microsoft.PowerShell
$PSSessionOption Se $PSSessionOption
$Transcript (ingen)
$VerbosePreference SilentlyContinue
$WarningPreference Fortsätt
$WhatIfPreference Falskt

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

Anteckning

Ändringar av inställningsvariabeln börjar bara gälla i skript och funktioner om dessa skript eller funktioner definieras i samma omfång som det omfång där inställningar 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 angetts 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ökningsmeddelanden.

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.

Variabelns $ConfirmPreference giltiga värden är Hög, Medel eller Låg. 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 None (Ingen) frågar PowerShell aldrig automatiskt innan du kör en cmdlet eller funktion.

Ändra variabelns värde om du vill ändra det bekräftande beteendet för alla cmdletar och funktioner i sessionen $ConfirmPreference .

Om du vill åsidosätta $ConfirmPreference för ett enda kommando använder du parametern Confirm för en cmdlet eller funktion. Om du vill begära bekräftelse använder du -Confirm. Om du vill ignorera bekräftelsen 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 Bekräfta 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 uppmanar till bekräftelse innan du kör cmdletar eller funktioner med medelhög eller hög risk.
  • Hög: PowerShell uppmanar till bekräftelse innan du kör cmdletar eller funktioner med hög risk.

Detaljerad förklaring

PowerShell kan automatiskt uppmana dig att bekräfta innan du utför en åtgärd. Till exempel när cmdlet eller funktion avsevärt påverkar systemet 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 ignorera 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 för är Hög, sker automatisk bekräftelse sällan. 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 medelhöga risker bekräftas de inte automatiskt och Remove-Item filen tas bort. 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 med ett Write-Debug kommando på kommandoraden.

Vissa cmdletar visar felsökningsmeddelanden, som vanligtvis är tekniska meddelanden som är utformade för programmerare och tekniska supportpersonal. 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ökningsmeddelanden för ett visst kommando. Mer information finns i about_CommonParameters.

Giltiga värden är följande:

  • 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. Om du lägger till den vanliga parametern Felsöka i ett kommando, när kommandot har konfigurerats för att generera ett felsökningsmeddelande, ändras värdet för variabeln $DebugPreference till Fråga.
  • Fortsätt: Visar felsökningsmeddelandet och fortsätter körningen.
  • TystFortsätt: (Standard) Ingen effekt. Felsökningsmeddelandet visas inte och körningen fortsätter utan avbrott.

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 Debug , som visar eller döljer felsökningsmeddelanden 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 ignorera 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 Stopp . 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 ignorera 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å inquire-värdet . Felsökningsmeddelandet visas och användaren uppmanas att bekräfta.

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

Du kan använda en cmdlets vanliga ErrorAction-parameter för att åsidosätta inställningen för ett visst kommando.

Giltiga värden är följande:

  • Fortsätt: (Standard) Visar felmeddelandet och fortsätter att köras.
  • Ignorera: Utelämnar felmeddelandet och fortsätter att köra kommandot. Värdet Ignore ä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 om du vill fortsätta.
  • TystFortsätt: 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. streama
  • Pausa: Pausar 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. Pausa är inte ett giltigt värde för variabeln $ErrorActionPreference .

$ErrorActionPreference och errorAction-parametern påverkar inte hur PowerShell svarar på avslutande fel som stoppar cmdlet-bearbetning. Mer information om den vanliga parametern ErrorAction finns i about_CommonParameters.

Exempel

De här exemplen visar effekten av variabelns $ErrorActionPreference olika värden. Parametern ErrorAction används för att åsidosätta värdet $ErrorActionPreference .

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 -Message  'Test Error' ; Write-Host 'Hello World' : Test Error
    + CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
    + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException

Hello World

Det här exemplet visar $ErrorActionPreference standardvärdet , Inquire. 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 TystFortsätt. 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 här exemplet visas inställd på $ErrorActionPreferenceStoppa. Den visar också det extra objekt som genererats till variabeln $Error .

# Change the ErrorActionPreference to 'Stop'
$ErrorActionPreference = 'Stop'
# Error message is is generated and script stops processing
Write-Error -Message 'Test Error' ; Write-Host 'Hello World'

# Show the ActionPreferenceStopException and the error generated
$Error[0]
$Error[1]
Write-Error -Message 'Test Error' ; Write-Host 'Hello World' : Test Error
At line:1 char:1
+ Write-Error -Message 'Test Error' ; Write-Host 'Hello World'
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
    + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException

The running command stopped because the preference variable "ErrorActionPreference"
or common parameter is set to Stop: Test Error

Write-Error -Message 'Test Error' ; Write-Host 'Hello World' : Test Error
At line:1 char:1
+ Write-Error -Message 'Test Error' ; Write-Host 'Hello World'
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
    + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException

$ErrorView

Avgör visningsformatet för felmeddelanden i PowerShell.

Giltiga värden är följande:

  • NormalView: (Standard) 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 NormalView. Get-ChildItem används för att hitta en obefintlig fil.

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

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 $Error automatiska variabeln finns i about_automatic_variables.

Följande kommando tar errorRecord-objektet som är associerat med det senaste felet i felmatrisen, element 0 och formaterar alla felobjektets egenskaper 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, utan 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 att köra tjänster och en för stoppade tjänster. Den använder ett Get-Service kommando för att hämta alla tjänster och skickar sedan resultaten 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ömmar 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.

Giltiga värden är följande:

  • Stoppa: 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.
  • Paus är endast tillgängligt för arbetsflöden som inte stöds i PowerShell 6 och senare.
  • TystFortsätt: (Standard) Ingen effekt. Informationsmeddelandena visas inte och skriptet fortsätter utan avbrott.

$Log*Händelse

Log*Händelseinställningsvariabler 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 log*händelseinställningsvariablerna för att anpassa loggen, till exempel loggning av händelser om kommandon.

Log*Händelseinställningsvariablerna är följande:

  • $LogCommandHealthEvent: Loggar fel och undantag vid initiering och bearbetning av kommandon. Standardvärdet är $false (loggas inte).
  • $LogCommandLifecycleEvent: Loggar start och stopp av kommandon och kommandopipelines och säkerhetsfel i kommandoidentifiering. Standardvärdet är $false (loggas inte).
  • $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-providers. 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 ta reda på antalet kommandon som sparats i kommandohistoriken skriver du:

(Get-History).Count

Om du vill se de kommandon som sparats i sessionshistoriken använder du cmdleten Get-History . Mer information finns i about_History.

$OFS

Avgränsaren för utdatafält (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 utdatafilens avgränsare ä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 .

Anteckning

Om du förväntar dig standardvärdet för ett blanksteg (" ") i skript-, modul- eller konfigurationsutdata bör du vara försiktig med 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 den skickar text till andra program.

Om ett program till exempel returnerar Unicode-strängar till PowerShell kan du behöva ändra värdet till UnicodeEncoding för att skicka tecknen korrekt.

Giltiga värden är följande: Objekt som härleds från en kodningsklass, till exempel ASCIIEncoding, SBCSCodePageEncoding, UTF7Encoding, UTF8Encoding, UTF32Encoding och UnicodeEncoding.

Standard: UTF8Encoding-objekt (System.Text.UTF8Encoding)

Exempel

Det här exemplet visar hur du får Windows findstr.exe-kommandot att fungera i PowerShell på en dator som är lokaliserad för ett språk som använder Unicode-tecken, till exempel kinesiska.

Det första kommandot hittar värdet $OutputEncodingför . Eftersom värdet är ett kodningsobjekt visar du bara dess egenskap EncodingName .

$OutputEncoding.EncodingName

I det här exemplet används ett findstr.exe kommando för att söka efter två kinesiska tecken som finns i Test.txt filen. När det här findstr.exe kommandot körs i Kommandotolken i Windows (cmd.exe) hittar findstr.exe tecknen i textfilen. Men när du kör samma findstr.exe kommando i PowerShell, hittas inte tecknen eftersom PowerShell skickar dem till findstr.exe i ASCII-text i stället för i Unicode-text.

findstr <Unicode-characters>

Om du vill att kommandot ska fungera i PowerShell anger du värdet $OutputEncoding för till värdet för outputEncoding-egenskapen för konsolen, som baseras på de nationella inställningar som valts för Windows. Eftersom OutputEncoding är en statisk egenskap för konsolen använder du dubbelkolon (::) i kommandot .

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

Efter kodningsändringen hittar kommandotfindstr.exe Unicode-tecknen.

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

$ProgressPreference

Avgör hur PowerShell svarar på förloppsuppdateringar som genereras av ett skript, en cmdlet eller en provider, till exempel förloppsindikatorerna som genereras av cmdleten Write-Progress . Cmdleten Write-Progress skapar förloppsindikatorer som visar status för ett kommando.

Giltiga värden är följande:

  • Stopp: Visar inte förloppsindikatorn. I stället visas ett felmeddelande och slutar köras.
  • Fråga: Visar inte förloppsindikatorn. Frågar efter behörighet att fortsätta. Om du svarar med Y eller Avisas förloppsindikatorn.
  • Fortsätt: (Standard) Visar förloppsindikatorn och fortsätter körningen.
  • TystFortsätt: Kör kommandot men visar inte förloppsindikatorn.

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

$PSDefaultParameterValues

Anger standardvärden för parametrarna för cmdletar och avancerade funktioner. Värdet för $PSDefaultParameterValues ä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.

$PSModuleAutoloadingPreference

Aktiverar och inaktiverar automatisk import av moduler i sessionen. Allt är standard. Oavsett variabelns värde kan du använda Import-Module för att importera en modul.

Giltiga värden är:

  • Alla: Moduler importeras automatiskt vid första användning. Om du vill importera en modul hämtar eller använder du valfritt kommando i modulen. Använd till exempel Get-Command.
  • 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 MyModule-modulen .
  • Ingen: Automatisk import av moduler inaktiveras i sessionen. Om du vill importera en modul använder du cmdleten Import-Module .

Mer information om automatisk import av moduler finns i about_Modules.

$PSSessionApplicationName

Anger standardprogramnamnet 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 standardinställningen.

Programnamnet är den sista noden i en anslutnings-URI. Programnamnet i följande exempel-URI är WSMANtill exempel .

http://Server01:8080/WSMAN

Standardprogramnamnet används när fjärrkommandot inte anger en 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 PSSessioner som skapats 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 https://schemas.microsoft.com/PowerShell/microsoft.PowerShell anger microsoft.PowerShell-sessionskonfigurationen på fjärrdatorn.

Om du bara anger ett konfigurationsnamn läggs följande schema-URI till:

https://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 ändra värdet för den här variabeln när som helst. När du gör det måste du komma 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

Upprättar 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 inställningsvariabeln $PSSessionOption 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.

$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-TranscriptPath 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 i $Home\My Documents katalogen som \PowerShell_transcript.<time-stamp>.txt filer.

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

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.

Giltiga värden är följande:

  • 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.
  • TystKontinu: (standard) Visar inte det utförliga meddelandet. Fortsätter att köras.

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

Det här exemplet visar effekten av värdet Stopp . 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 den utförliga parametern med ett värde som $false å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 verbose-parametern med ett värde för $false som å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 .

Du kan använda common-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.

Giltiga värden är följande:

  • 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.
  • Tyst Fortsätt: Visar inte varningsmeddelandet. Fortsätter att köras.

Exempel

De här exemplen visar effekten av de olika värdena för $WarningPreference. Parametern WarningAction åsidosätter inställningsvärdet.

Det här exemplet visar 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 inquire-värdet . 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

I det $WarningPreference här exemplet ändras värdet 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 Inquire . 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.

Giltiga värden är följande:

  • Falskt (0, inte aktiverat): (Standard) WhatIf aktiveras inte automatiskt. Om du vill aktivera det manuellt använder du cmdletens WhatIf-parameter .
  • Sant (1, aktiverat): WhatIf aktiveras automatiskt för 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 visst kommando.

Det här exemplet visar 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 inställd på 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 True.

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

about_Automatic_Variables

about_CommonParameters

about_Environment_Variables

about_Profiles

about_Remote

about_Scopes

about_Variables