about_Preference_Variables

Kurze Beschreibung

Variablen, die das Verhalten von PowerShell anpassen.

Lange Beschreibung

PowerShell enthält eine Reihe von Variablen, mit denen Sie das Verhalten anpassen können. Diese Einstellungsvariablen funktionieren wie die Optionen in GUI-basierten Systemen.

Die Einstellungsvariablen wirken sich auf die PowerShell-Betriebsumgebung aus, und alle Befehle werden in der Umgebung ausgeführt. In vielen Fällen verfügen die Cmdlets über Parameter, mit denen Sie das Einstellungsverhalten für einen bestimmten Befehl überschreiben können.

In der folgenden Tabelle sind die Einstellungsvariablen und ihre Standardwerte aufgeführt.

Variable Standardwert
$ConfirmPreference High
$DebugPreference SilentlyContinue
$ErrorActionPreference Continue
$ErrorView ConciseView
$FormatEnumerationLimit 4
$InformationPreference SilentlyContinue
$LogCommandHealthEvent $False (nicht protokolliert)
$LogCommandLifecycleEvent $False (nicht protokolliert)
$LogEngineHealthEvent $True (protokolliert)
$LogEngineLifecycleEvent $True (protokolliert)
$LogProviderLifecycleEvent $True (protokolliert)
$LogProviderHealthEvent $True (protokolliert)
$MaximumHistoryCount 4096
$OFS Leerzeichen ( " " )
$OutputEncoding UTF8Encoding Objekt
$ProgressPreference Continue
$PSDefaultParameterValues @{} (leere Hashtabelle)
$PSEmailServer $Null (none)
$PSModuleAutoLoadingPreference All
$PSSessionApplicationName 'wsman'
$PSSessionConfigurationName 'http://schemas.microsoft.com/powershell/Microsoft.PowerShell'
$PSSessionOption PSSessionOption Objekt
$Transcript $Null (none)
$VerbosePreference SilentlyContinue
$WarningPreference Continue
$WhatIfPreference $False

PowerShell enthält die folgenden Umgebungsvariablen, die Benutzereinstellungen speichern. Weitere Informationen zu diesen Umgebungsvariablen finden Sie unter about_Environment_Variables.

  • env:PSExecutionPolicyPreference
  • $env:PSModulePath

Hinweis

Änderungen an der Einstellungsvariablen werden nur in Skripts und Funktionen wirksam, wenn diese Skripts oder Funktionen im gleichen Bereich wie der Bereich definiert sind, in dem die Einstellung verwendet wurde. Weitere Informationen finden Sie unter about_Scopes.

Arbeiten mit Einstellungsvariablen

In diesem Dokument werden die einzelnen Einstellungsvariablen beschrieben.

Geben Sie den Namen der Variablen ein, um den aktuellen Wert einer bestimmten Einstellungsvariablen anzuzeigen. Der folgende Befehl zeigt z. B. den Wert der $ConfirmPreference Variablen an.

 $ConfirmPreference
High

Um den Wert einer Variablen zu ändern, verwenden Sie eine Zuweisungs-Anweisung. Die folgende Anweisung ändert z. B. den $ConfirmPreference Wert des Parameters in Mittel.

$ConfirmPreference = "Medium"

Die von Ihnen festgelegten Werte sind spezifisch für die aktuelle PowerShell-Sitzung. Um Variablen in allen PowerShell-Sitzungen effektiv zu machen, fügen Sie sie Ihrem PowerShell-Profil hinzu. Weitere Informationen finden Sie unter about_Profiles.

Remotearbeit

Wenn Sie Befehle auf einem Remotecomputer ausführen, unterliegen die Remotebefehle nur den Einstellungen, die im PowerShell-Client des Remotecomputers festgelegt sind. Wenn Sie beispielsweise einen Remotebefehl ausführen, bestimmt der Wert der Variablen des $DebugPreference Remotecomputers, wie PowerShell auf Debugmeldungen reagiert.

Weitere Informationen zu Remotebefehlen finden Sie unter about_Remote.

$ConfirmPreference

Bestimmt, ob PowerShell Sie vor dem Ausführen eines Cmdlets oder einer Funktion automatisch zur Bestätigung auffordert.

Die $ConfirmPreference Variable nimmt eine der ConfirmImpact -Enumerationswerte: Hoch, Mittel, Niedrig oder Keine.

Cmdlets und Funktionen wird das Risiko von "Hoch", "Mittel" oder "Niedrig" zugewiesen. Wenn der Wert der $ConfirmPreference Variablen kleiner oder gleich dem Risiko ist, das einem Cmdlet oder einer Funktion zugewiesen ist, fordert PowerShell Sie automatisch zur Bestätigung auf, bevor das Cmdlet oder die Funktion ausgeführt wird.

Wenn der Wert der $ConfirmPreference Variablen None lautet, werden Sie von PowerShell nie automatisch aufgefordert, bevor sie ein Cmdlet oder eine Funktion ausführen.

Um das Bestätigungsverhalten für alle Cmdlets und Funktionen in der Sitzung zu ändern, ändern Sie den $ConfirmPreference Wert der Variablen.

Um für einen einzelnen Befehl außer Kraft zu setzen, verwenden Sie den $ConfirmPreference Confirm-Parameter eines Cmdlets oder einer Funktion. Verwenden Sie , um eine Bestätigung -Confirm anzufordern. Verwenden Sie , um die Bestätigung zu -Confirm:$false unterdrücken.

Gültige Werte von $ConfirmPreference :

  • Keine: PowerShell fordert nicht automatisch zur Eingabe auf. Um die Bestätigung eines bestimmten Befehls anzufordern, verwenden Sie den Confirm-Parameter des Cmdlets oder der Funktion.
  • Niedrig: PowerShell fordert zur Bestätigung auf, bevor Cmdlets oder Funktionen mit geringem, mittlerem oder hohem Risiko ausgeführt werden.
  • Mittel: PowerShell fordert zur Bestätigung auf, bevor Cmdlets oder Funktionen mit mittlerem oder hohem Risiko ausgeführt werden.
  • Hoch: PowerShell fordert zur Bestätigung auf, bevor Cmdlets oder Funktionen mit hohem Risiko ausgeführt werden.

Ausführliche Erläuterung

PowerShell kann Sie automatisch zur Bestätigung auffordern, bevor Sie eine Aktion ausführen. Wenn sich cmdlet oder function beispielsweise erheblich auf das System auswirkt, um Daten zu löschen oder eine beträchtliche Menge an Systemressourcen zu verwenden.

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

Die Schätzung des Risikos ist ein Attribut des Cmdlets oder der Funktion, das als ConfirmImpact bezeichnet wird. Benutzer können dies nicht ändern.

Cmdlets und Funktionen, die ein Risiko für das System darstellen können, verfügen über einen Confirm-Parameter, mit dem Sie die Bestätigung für einen einzelnen Befehl anfordern oder unterdrücken können.

Da die meisten Cmdlets und Funktionen den Standardrisikowert ConfirmImpact von Mittel verwenden und der Standardwert $ConfirmPreference von hoch ist, erfolgt die automatische Bestätigung nur selten. Sie können die automatische Bestätigung jedoch aktivieren, indem Sie den Wert von $ConfirmPreference in Mittel oder Niedrig ändern.

Beispiele

Dieses Beispiel zeigt die Auswirkung des Standardwerts der $ConfirmPreference Variablen, High. Der Wert "Hoch" bestätigt nur Cmdlets und Funktionen mit hohem Risiko. Da die meisten Cmdlets und Funktionen ein mittleres Risiko darstellen, werden sie nicht automatisch bestätigt und Remove-Item löschen die Datei. Wenn Sie -Confirm dem Befehl hinzufügen, wird der Benutzer zur Bestätigung aufgefordert.

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

Verwenden Sie -Confirm , um eine Bestätigung anzufordern.

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

Das folgende Beispiel zeigt die Auswirkung der Änderung des Werts von $ConfirmPreference in Mittel. Da die meisten Cmdlets und Funktionen ein mittleres Risiko darstellen, werden sie automatisch bestätigt. Um die Bestätigungsaufforderung für einen einzelnen Befehl zu unterdrücken, verwenden Sie den Confirm-Parameter mit dem Wert $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

$DebuggenVorverlässigkeit

Bestimmt, wie PowerShell auf Debugmeldungen reagiert, die von einem Skript, Cmdlet oder Anbieter oder von einem Befehl in der Befehlszeile generiert Write-Debug werden.

Die $DebugPreference Variable nimmt eine der ActionPreference -Enumerationswerte: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend oder Break.

Einige Cmdlets zeigen Debugmeldungen an, bei denen es sich in der Regel um technische Nachrichten handelt, die für Programmierer und Technische Supportexperten entwickelt wurden. Standardmäßig werden Debugmeldungen nicht angezeigt, aber Sie können Debugmeldungen anzeigen, indem Sie den Wert von $DebugPreference ändern.

Sie können den allgemeinen Debugparameter eines Cmdlets verwenden, um die Debugmeldungen für einen bestimmten Befehl anzuzeigen oder auszublenden. Weitere Informationen findest du unter about_CommonParameters.

Die folgenden Werte sind gültig:

  • Beenden: Zeigt die Debugmeldung an und beendet die Ausführung. Schreibt einen Fehler in die Konsole.
  • Abfragen: Zeigt die Debugmeldung an und fragt Sie, ob Sie fortfahren möchten. Durch Hinzufügen des allgemeinen Debugparameters zu einem Befehl ändert sich der Wert der Variablen in $DebugPreference "Wird abgefragt", wenn der Befehl zum Generieren einer Debugmeldung konfiguriert ist.
  • Weiter: Zeigt die Debugmeldung an und setzt die Ausführung fort.
  • SilentlyContinue: (Standard) Keine Auswirkung. Die Debugmeldung wird nicht angezeigt, und die Ausführung wird ohne Unterbrechung fortgesetzt.

Beispiele

Die folgenden Beispiele zeigen die Auswirkungen der Änderung der Werte von $DebugPreference , wenn ein Befehl in der Befehlszeile eingegeben Write-Debug wird. Die Änderung wirkt sich auf alle Debugmeldungen aus, einschließlich der von Cmdlets und Skripts generierten Nachrichten. Die Beispiele zeigen den Debug-Parameter, der die Debugmeldungen im Zusammenhang mit einem einzelnen Befehl anzeigt oder ausblendet.

Dieses Beispiel zeigt die Auswirkung des Standardwerts der $DebugPreference Variablen SilentlyContinue. Standardmäßig wird die Write-Debug Debugmeldung des Cmdlets nicht angezeigt, und die Verarbeitung wird fortgesetzt. Wenn der Debug-Parameter verwendet wird, überschreibt er die Einstellung für einen einzelnen Befehl. Die Debugmeldung wird angezeigt.

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

In diesem Beispiel wird die Auswirkung von $DebugPreference mit dem Wert Continue veranschaulicht. Die Debugmeldung wird angezeigt, und der Befehl wird weiterhin ausgeführt.

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

In diesem Beispiel wird der Debug-Parameter mit dem Wert $false verwendet, um die Meldung für einen einzelnen Befehl zu unterdrücken. Die Debugmeldung wird nicht angezeigt.

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

In diesem Beispiel wird der Effekt veranschaulicht, $DebugPreference wenn auf den Stop-Wert festgelegt wird. Die Debugmeldung wird angezeigt, und der Befehl wird beendet.

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

In diesem Beispiel wird der Debug-Parameter mit dem Wert $false verwendet, um die Meldung für einen einzelnen Befehl zu unterdrücken. Die Debugmeldung wird nicht angezeigt, und die Verarbeitung wird nicht beendet.

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

In diesem Beispiel wird der Effekt veranschaulicht, $DebugPreference wenn auf den Wert Für die Anfrage festgelegt wird. Die Debugmeldung wird angezeigt, und der Benutzer wird zur Bestätigung aufgefordert.

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

In diesem Beispiel wird der Debug-Parameter mit dem Wert $false verwendet, um die Meldung für einen einzelnen Befehl zu unterdrücken. Die Debugmeldung wird nicht angezeigt, und die Verarbeitung wird fortgesetzt.

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

$ErrorActionPreference

Bestimmt, wie PowerShell auf einen Fehler ohne Abbruch reagiert, ein Fehler, der die Cmdlet-Verarbeitung nicht beendet. Beispielsweise an der Befehlszeile oder in einem Skript, Cmdlet oder Anbieter, z. B. die vom Cmdlet generierten Write-Error Fehler.

Die $ErrorActionPreference Variable nimmt eine der folgenden Ankn. ActionPreference -Enumerationswerte: SilentlyContinue, Stop, Continue, Ignore , Suspend oder Break.

Sie können den allgemeinen ErrorAction-Parameter eines Cmdlets verwenden, um die Einstellung für einen bestimmten Befehl zu überschreiben.

Die folgenden Werte sind gültig:

  • Unterbrechung: Geben Sie den Debugger ein, wenn ein Fehler auftritt oder eine Ausnahme ausgelöst wird.
  • Continue: (Standard) Zeigt die Fehlermeldung an und setzt die Ausführung fort.
  • Ignorieren: Unterdrückt die Fehlermeldung und setzt die Ausführung des Befehls fort. Der Ignore-Wert ist für die Verwendung pro Befehl und nicht für die Verwendung als gespeicherte Einstellung vorgesehen. Ignore ist kein gültiger Wert für die $ErrorActionPreference Variable.
  • Befragen: Zeigt die Fehlermeldung an und fragt Sie, ob Sie fortfahren möchten.
  • SilentlyContinue: Keine Auswirkung. Die Fehlermeldung wird nicht angezeigt, und die Ausführung wird ohne Unterbrechung fortgesetzt.
  • Beenden: Zeigt die Fehlermeldung an und beendet die Ausführung. Zusätzlich zum generierten Fehler generiert der Stop-Wert ein ActionPreferenceStopException-Objekt für den Fehlerstream. Datenstrom
  • Suspend: Ein Workflowauftrag wird automatisch angehalten, um weitere Untersuchungen zu ermöglichen. Nach der Untersuchung kann der Workflow fortgesetzt werden. Der Suspend-Wert ist für die Verwendung pro Befehl und nicht für die Verwendung als gespeicherte Einstellung vorgesehen. Suspend ist kein gültiger Wert für die $ErrorActionPreference Variable.

$ErrorActionPreference und der ErrorAction-Parameter wirken sich nicht darauf aus, wie PowerShell auf Fehler reagiert, die die Cmdlet-Verarbeitung beenden. Weitere Informationen zum allgemeinen ErrorAction-Parameter finden Sie unter about_CommonParameters.

Beispiele

Diese Beispiele zeigen die Auswirkungen der verschiedenen Werte der $ErrorActionPreference Variablen. Der ErrorAction-Parameter wird verwendet, um den Wert zu $ErrorActionPreference überschreiben.

Dieses Beispiel zeigt den $ErrorActionPreference Standardwert Continue. Es wird ein Fehler ohne Abbruch generiert. Die Meldung wird angezeigt, und die Verarbeitung wird fortgesetzt.

# 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

In diesem Beispiel wird der $ErrorActionPreference Standardwert "Wird abfragt" angezeigt. Ein Fehler wird generiert, und eine Aufforderung zur Aktion wird angezeigt.

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

In diesem Beispiel wird $ErrorActionPreference gezeigt, dass auf SilentlyContinue festgelegt ist. Die Fehlermeldung wird unterdrückt.

# 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

In diesem Beispiel wird $ErrorActionPreference gezeigt, dass auf Beenden festgelegt ist. Außerdem wird das für die Variable generierte zusätzliche Objekt $Error gezeigt.

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

Bestimmt das Anzeigeformat von Fehlermeldungen in PowerShell.

Die $ErrorView Variable nimmt einen der ErrorView Enumerationswerte an: NormalView, CategoryView oder ConciseView.

Die folgenden Werte sind gültig:

  • ConciseView: (Standard) Bietet eine präzise Fehlermeldung und eine umgestalte Ansicht für erweiterte Modulgeneratoren. Wenn der Fehler über die Befehlszeile auftritt, handelt es sich um eine Einzeilenfehlermeldung. Andernfalls erhalten Sie eine mehrzeigen Fehlermeldung, die den Fehler enthält, und einen Zeiger auf den Fehler, der zeigt, wo er in dieser Zeile auftritt. Wenn das Terminal Virtual Terminal unterstützt, werden ANSI-Farbcodes verwendet, um Farbakstriche zu bieten. Die Akzentfarbe kann unter geändert $Host.PrivateData.ErrorAccentColor werden. Verwenden Get-Error Sie das Cmdlet für eine umfassende detaillierte Ansicht des vollqualifizierten Fehlers, einschließlich innerer Ausnahmen.

    ConciseView wurde in PowerShell 7 hinzugefügt.

  • NormalView: Eine detaillierte Ansicht, die für die meisten Benutzer konzipiert ist. Besteht aus einer Beschreibung des Fehlers und dem Namen des objekts, das am Fehler beteiligt ist.

  • CategoryView: Eine kurze, strukturierte Ansicht, die für Produktionsumgebungen konzipiert ist. Das Format sieht folgendermaßen aus:

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

Weitere Informationen zu den Feldern in CategoryView finden Sie unter ErrorCategoryInfo-Klasse.

Beispiele

Dieses Beispiel zeigt, wie ein Fehler auftritt, wenn der Wert $ErrorView von der Standardwert Ist ConciseView ist. Get-ChildItem wird verwendet, um ein nicht vorhandenes Verzeichnis zu suchen.

Get-ChildItem -path 'C:\NoRealDirectory'
Get-ChildItem: Cannot find path 'C:\NoRealDirectory' because it does not exist.

Dieses Beispiel zeigt, wie ein Fehler auftritt, wenn der Wert $ErrorView von der Standardwert Ist ConciseView ist. Script.ps1 wird ausgeführt und löst einen Fehler aus der Get-Item -Anweisung aus.

./Script.ps1
Get-Item: C:\Script.ps1
Line |
  11 | Get-Item -Path .\stuff
     | ^ Cannot find path 'C:\demo\stuff' because it does not exist.

Dieses Beispiel zeigt, wie ein Fehler auftritt, wenn der $ErrorView Wert von in NormalView geändert wird. Get-ChildItem wird verwendet, um eine nicht vorhandene Datei zu suchen.

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

Dieses Beispiel zeigt, wie der gleiche Fehler auftritt, wenn der Wert von $ErrorView in CategoryView geändert wird.

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

In diesem Beispiel wird veranschaulicht, dass der Wert von $ErrorView nur die Fehleranzeige beeinflusst. Die Struktur des Fehlerobjekts, das in der automatischen Variablen gespeichert ist, wird $Error nicht geändert. Informationen zur automatischen $Error Variablen finden Sie unter about_automatic_variables.

Der folgende Befehl verwendet das ErrorRecord-Objekt, das dem letzten Fehler im Fehlerarray , Element 0, zugeordnet ist, und formatiert alle Eigenschaften des Fehlerobjekts in einer Liste.

$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

Bestimmt, wie viele aufzählte Elemente in einer Anzeige enthalten sind. Diese Variable wirkt sich nicht auf die zugrunde liegenden Objekte aus, sondern nur auf die Anzeige. Wenn der Wert von geringer als die Anzahl der aufzählten Elemente ist, fügt PowerShell eine Auslassungspunkte ( ) hinzu, um anzugeben, dass Elemente $FormatEnumerationLimit ... nicht angezeigt werden.

Gültige Werte: Ganze Zahlen ( Int32 )

Standardwert: 4

Beispiele

In diesem Beispiel wird gezeigt, wie die -Variable verwendet wird, um die Anzeige $FormatEnumerationLimit von aufzählten Elementen zu verbessern.

Mit dem Befehl in diesem Beispiel wird eine Tabelle generiert, in der alle auf dem Computer ausgeführten Dienste in zwei Gruppen aufgeführt sind: eine für ausgeführte Dienste und eine für beendete Dienste. Er verwendet einen Befehl, um alle Dienste zu erhalten, und sendet dann die Ergebnisse über die Pipeline an das Cmdlet, das die Ergebnisse nach dem Get-Service Group-Object Dienststatus gruppent.

Das Ergebnis ist eine Tabelle, die den Status in der Spalte Name und die Prozesse in der Spalte Gruppe auflistet. Um die Spaltenbezeichnungen zu ändern, verwenden Sie eine Hashtabelle, siehe about_Hash_Tables. Weitere Informationen finden Sie in den Beispielen unter Format-Table.

Suchen Sie den aktuellen Wert von $FormatEnumerationLimit .

$FormatEnumerationLimit
4

Listen Sie alle Dienste nach Status auf. In der Spalte Gruppe sind maximal vier Dienste für jeden Status aufgeführt, da den $FormatEnumerationLimit Wert 4 auf hat.

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

Um die Anzahl der aufgelisteten Elemente zu erhöhen, erhöhen Sie den Wert $FormatEnumerationLimit von auf 1.000. Verwenden Get-Service Sie und , um die Dienste Group-Object anzuzeigen.

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

Verwenden Format-Table Sie mit dem Wrap-Parameter, um die Liste der Dienste anzuzeigen.

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

Mit $InformationPreference der Variablen können Sie Die Einstellungen für den Informationsstream festlegen, die Benutzern angezeigt werden. Insbesondere Informationsmeldungen, die Sie Befehlen oder Skripts durch Hinzufügen des Cmdlets Write-Information hinzugefügt haben. Wenn der InformationAction-Parameter verwendet wird, überschreibt sein Wert den Wert der $InformationPreference Variablen. Write-Information wurde in PowerShell 5.0 eingeführt.

Die $InformationPreference Variable nimmt eine der ActionPreference -Enumerationswerte: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend oder Break.

Die folgenden Werte sind gültig:

  • Stop: Beendet einen Befehl oder ein Skript bei einem Vorkommen des Write-Information Befehls.
  • Benachrichtigung: Zeigt die Informationsmeldung an, die Sie in einem Write-Information Befehl angeben, und fragt dann, ob Sie fortfahren möchten.
  • Weiter: Zeigt die Informationsmeldung an und setzt die Ausführung fort.
  • Anhalten ist nur für Workflows verfügbar, die in PowerShell 6 und darüber hinaus nicht unterstützt werden.
  • SilentlyContinue: (Standard) Keine Auswirkung. Die Informationsmeldungen werden nicht angezeigt, und das Skript wird ohne Unterbrechung fortgesetzt.

$Log*Event

Die Einstellungsvariablen Log*Event bestimmen, welche Ereignistypen in das PowerShell-Ereignisprotokoll in Ereignisanzeige geschrieben werden. Standardmäßig werden nur Engine- und Anbieterereignisse protokolliert. Sie können jedoch die Einstellungsvariablen Log*Event verwenden, um Ihr Protokoll anzupassen, z. B. das Protokollieren von Ereignissen zu Befehlen.

Die Einstellungsvariablen Log*Event sind wie folgt:

  • $LogCommandHealthEvent: Protokolliert Fehler und Ausnahmen bei der Befehlsinitialisierung und -verarbeitung. Der Standardwert ist $false (nicht protokolliert).
  • $LogCommandLifecycleEvent: Protokolliert das Starten und Beenden von Befehlen und Befehlspipelines sowie Sicherheits ausnahmen bei der Befehlsermittlung. Der Standardwert ist $false (nicht protokolliert).
  • $LogEngineHealthEvent: Protokolliert Fehler und Fehler von Sitzungen. Der Standardwert ist $true (protokolliert).
  • $LogEngineLifecycleEvent: Protokolliert das Öffnen und Schließen von Sitzungen. Der Standardwert ist $true (protokolliert).
  • $LogProviderHealthEvent: Protokolliert Anbieterfehler, z. B. Lese- und Schreibfehler, Suchfehler und Aufruffehler. Der Standardwert ist $true (protokolliert).
  • $LogProviderLifecycleEvent: Protokolle zum Hinzufügen und Entfernen von PowerShell-Anbietern. Der Standardwert ist $true (protokolliert). Informationen zu PowerShell-Anbietern finden Sie unter about_Providers.

Um ein Log*Event zu aktivieren, geben Sie die Variable mit dem Wert $true ein, z. B.:

$LogCommandLifeCycleEvent = $true

Um einen Ereignistyp zu deaktivieren, geben Sie die Variable mit dem Wert $false ein, z. B.:

$LogCommandLifeCycleEvent = $false

Die von Ihnen aktivierten Ereignisse gelten nur für die aktuelle PowerShell-Konsole. Um die Konfiguration auf alle Konsolen anzuwenden, speichern Sie die Variableneinstellungen in Ihrem PowerShell-Profil. Weitere Informationen finden Sie unter about_Profiles.

$MaximumHistoryCount

Bestimmt, wie viele Befehle im Befehlsverlauf für die aktuelle Sitzung gespeichert werden.

Gültige Werte: 1 - 32768 ( Int32 )

Standard: 4096

Geben Sie Folgendes ein, um die Anzahl der aktuell im Befehlsverlauf gespeicherten Befehle zu ermitteln:

(Get-History).Count

Verwenden Sie das Cmdlet , um die im Sitzungsverlauf gespeicherten Befehle Get-History anzuzeigen. Weitere Informationen finden Sie unter about_History.

$Ofs

Das Ausgabefeldtrennzeichen (Output Field Separator, OFS) gibt das Zeichen an, das die Elemente eines Arrays trennt, das in eine Zeichenfolge konvertiert wird.

Gültige Werte: Beliebige Zeichenfolge.

Standard: Leerzeichen

Standardmäßig ist die $OFS Variable nicht vorhanden, und das Ausgabedateitrennzeichen ist ein Leerzeichen. Sie können diese Variable jedoch hinzufügen und auf eine beliebige Zeichenfolge festlegen. Sie können den Wert von $OFS in Ihrer Sitzung ändern, indem Sie $OFS="<value>" eingeben.

Hinweis

Wenn Sie den Standardwert eines Leerzeichens ( " " ) in Ihrer Skript-, Modul- oder Konfigurationsausgabe erwarten, achten Sie darauf, dass der $OFS Standardwert nicht an anderer Stelle in Ihrem Code geändert wurde.

Beispiele

Dieses Beispiel zeigt, dass ein Leerzeichen verwendet wird, um die Werte zu trennen, wenn ein Array in eine Zeichenfolge konvertiert wird. In diesem Fall wird ein Array von ganzen Zahlen in einer Variablen gespeichert, und dann wird die Variable in eine Zeichenfolge wandelt.

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

Um das Trennzeichen zu ändern, fügen Sie die $OFS Variable hinzu, indem Sie ihr einen Wert zuweisen. Die Variable muss den Namen $OFS haben.

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

Um das Standardverhalten wiederherzustellen, können Sie dem Wert von ein Leerzeichen ( ) zuweisen " " $OFS oder die Variable löschen. Mit den folgenden Befehlen wird die Variable gelöscht, und anschließend wird überprüft, ob das Trennzeichen ein Leerzeichen ist.

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

$OutputEncoding

Bestimmt die Zeichencodierungsmethode, die PowerShell verwendet, wenn Text an andere Anwendungen gesendet wird.

Wenn eine Anwendung beispielsweise Unicode-Zeichenfolgen an PowerShell zurückgibt, müssen Sie den Wert möglicherweise in UnicodeEncoding ändern, um die Zeichen ordnungsgemäß zu senden.

Die gültigen Werte sind: Von einer Encoding-Klasse abgeleitete Objekte, z. B. ASCIIEncoding, UTF7Encoding, UTF8Encoding, UTF32Encodingund UnicodeEncoding.

Standard: UTF8Encoding-Objekt.

Beispiele

In diesem Beispiel wird gezeigt, wie der Windows findstr.exe Befehl in PowerShell auf einem Computer funktioniert, der für eine Sprache lokalisiert ist, die Unicode-Zeichen verwendet, z. B. Chinesisch.

Der erste Befehl sucht den Wert von $OutputEncoding . Da der Wert ein Codierungsobjekt ist, zeigen Sie nur seine EncodingName-Eigenschaft an.

$OutputEncoding.EncodingName

In diesem Beispiel wird ein findstr.exe Befehl verwendet, um nach zwei chinesischen Zeichen zu suchen, die in der Datei vorhanden Test.txt sind. Wenn dieser findstr.exe Befehl in der Windows Eingabeaufforderung (cmd.exe) ausgeführt wird, suchtfindstr.exe die Zeichen in der Textdatei. Wenn Sie jedoch denselben findstr.exe Befehl in PowerShell ausführen, werden die Zeichen nicht gefunden, da sie von PowerShell an findstr.exe im ASCII-Text und nicht im Unicode-Text gesendet werden.

findstr <Unicode-characters>

Damit der Befehl in PowerShell funktioniert, legen Sie den Wert von $OutputEncoding auf den Wert der OutputEncoding-Eigenschaft der Konsole fest, der auf dem für Windows ausgewählten Gebietsschema basiert. Da OutputEncoding eine statische Eigenschaft der Konsole ist, verwenden Sie doppelte Doppelpunkte :: () im Befehl.

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

Nach der Änderung der Codierung sucht der findstr.exe-Befehl die Unicode-Zeichen.

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

$ProgressPreference

Bestimmt, wie PowerShell auf Statusupdates reagiert, die von einem Skript, Cmdlet oder Anbieter generiert werden, z. B. die Statusanzeigen, die vom Cmdlet Write-Progress generiert werden. Das Write-Progress Cmdlet erstellt Statusleisten, die den Status eines Befehls anzeigen.

Die $ProgressPreference Variable nimmt eine der ActionPreference -Enumerationswerte: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend oder Break.

Die folgenden Werte sind gültig:

  • Beenden: Die Statusanzeige wird nicht angezeigt. Stattdessen wird eine Fehlermeldung angezeigt, und die Ausführung wird beendet.
  • Frag: Zeigt die Statusanzeige nicht an. Fordert zur Berechtigung zum Fortfahren auf. Wenn Sie mit Y oder A antworten, wird die Statusanzeige angezeigt.
  • Continue: (Standard) Zeigt die Statusanzeige an und setzt die Ausführung fort.
  • SilentlyContinue: Führt den Befehl aus, zeigt jedoch nicht die Statusanzeige an.

$PSDefaultParameterValues

Gibt Standardwerte für die Parameter von Cmdlets und erweiterten Funktionen an. Der Wert von $PSDefaultParameterValues ist eine Hashtabelle, in der der Schlüssel aus dem Cmdlet-Namen und dem Parameternamen besteht, getrennt durch einen Doppelpunkt ( : ). Der Wert ist ein benutzerdefinierter Standardwert, den Sie angeben.

$PSDefaultParameterValues wurde in PowerShell 3.0 eingeführt.

Weitere Informationen zu dieser Einstellungsvariablen finden Sie unter about_Parameters_Default_Values.

$PSEmailServer

Gibt den Standard-E-Mail-Server an, der zum Senden von E-Mail-Nachrichten verwendet wird. Diese Einstellungsvariable wird von Cmdlets verwendet, die E-Mails senden, z. B. das Send-MailMessage-Cmdlet.

$PSModuleAutoloadingPreference

Aktiviert und deaktiviert den automatischen Import von Modulen in der Sitzung. All ist die Standardeinstellung. Unabhängig vom Wert der Variablen können Sie Import-Module verwenden, um ein Modul zu importieren.

Die $PSModuleAutoloadingPreference Variable nimmt eine der PSModuleAutoLoadingPreference Enumerationswerte: None, ModuleQualified oder All.

Gültige Werte sind:

  • Alle: Module werden bei der ersten Verwendung automatisch importiert. Um ein Modul zu importieren, können Sie einen beliebigen Befehl im Modul verwenden. Verwenden Sie z. B. Get-Command.
  • ModuleQualified: Module werden nur dann automatisch importiert, wenn ein Benutzer den modulqualifizierten Namen eines Befehls im Modul verwendet. Wenn der Benutzer z. B. MyModule\MyCommand eint, importiert PowerShell das MyModule-Modul.
  • Keine: Der automatische Import von Modulen ist in der Sitzung deaktiviert. Verwenden Sie zum Importieren eines Moduls das Import-Module Cmdlet .

Weitere Informationen zum automatischen Importieren von Modulen finden Sie unter about_Modules.

$PSSessionApplicationName

Gibt den Standardanwendungsnamen für einen Remotebefehl an, der WS-Management-Technologie (Web Services for Management) verwendet. Weitere Informationen finden Sie unter Informationen Windows Remoteverwaltung.

Der Standardanwendungsname des Systems ist WSMAN , aber Sie können diese Einstellungsvariable verwenden, um den Standardwert zu ändern.

Der Anwendungsname ist der letzte Knoten in einem Verbindungs-URI. Der Anwendungsname im folgenden Beispiel-URI ist beispielsweise WSMAN .

http://Server01:8080/WSMAN

Der Standardanwendungsname wird verwendet, wenn der Remotebefehl keinen Verbindungs-URI oder Anwendungsnamen an gibt.

Der WinRM-Dienst verwendet den Anwendungsnamen, um einen Listener für die Verbindungsanforderung auszuwählen. Der Wert des Parameters sollte mit dem Wert der URLPrefix-Eigenschaft eines Listeners auf dem Remotecomputer übereinstimmen.

Verwenden Sie die Parameter ConnectionURI oder ApplicationName der Cmdlets New-PSSession, Enter-PSSessionoder Invoke-Command, um die Systemeinstellung und den Wert dieser Variablen zu überschreiben und einen anderen Anwendungsnamen für eine bestimmte Sitzung auszuwählen.

Die $PSSessionApplicationName Einstellungsvariable ist auf dem lokalen Computer festgelegt, gibt jedoch einen Listener auf dem Remotecomputer an. Wenn der von Ihnen angegebenen Anwendungsname auf dem Remotecomputer nicht vorhanden ist, schlägt der Befehl zum Einrichten der Sitzung fehl.

$PSSessionConfigurationName

Gibt die Standardsitzungskonfiguration an, die für PSSessions verwendet wird, die in der aktuellen Sitzung erstellt wurden.

Diese Einstellungsvariable wird auf dem lokalen Computer festgelegt, gibt jedoch eine Sitzungskonfiguration an, die sich auf dem Remotecomputer befindet.

Der Wert der Variablen $PSSessionConfigurationName ist ein vollqualifizierter Ressourcen-URI.

Der Standardwert gibt http://schemas.microsoft.com/PowerShell/microsoft.PowerShell die Microsoft.PowerShell-Sitzungskonfiguration auf dem Remotecomputer an.

Wenn Sie nur einen Konfigurationsnamen angeben, wird der folgende Schema-URI vorgefertigt:

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

Sie können die Standardeinstellung überschreiben und eine andere Sitzungskonfiguration für eine bestimmte Sitzung auswählen, indem Sie den ConfigurationName-Parameter der New-PSSession Enter-PSSession Cmdlets , oder Invoke-Command verwenden.

Sie können den Wert dieser Variablen jederzeit ändern. Denken Sie dabei daran, dass die ausgewählte Sitzungskonfiguration auf dem Remotecomputer vorhanden sein muss. Wenn dies nicht der Fehler ist, schlägt der Befehl zum Erstellen einer Sitzung fehl, die die Sitzungskonfiguration verwendet.

Diese Einstellungsvariable bestimmt nicht, welche lokalen Sitzungskonfigurationen verwendet werden, wenn Remotebenutzer eine Sitzung erstellen, die eine Verbindung mit diesem Computer herstellt. Sie können jedoch die Berechtigungen für die Konfigurationen der lokalen Sitzung verwenden, um zu bestimmen, welche Benutzer sie verwenden dürfen.

$PSSessionOption

Legt die Standardwerte für erweiterte Benutzeroptionen in einer Remotesitzung fest. Diese Optionseinstellungen überschreiben die Standardwerte des Systems für Sitzungsoptionen.

Die $PSSessionOption Variable enthält ein PSSessionOption-Objekt. Weitere Informationen finden Sie unter System.Management.Automation.Remoting.PSSessionOption. Jede Eigenschaft des -Objekts stellt eine Sitzungsoption dar. Die NoCompression-Eigenschaft schaltet z. B. die Datenkomprimierung während der Sitzung um.

Standardmäßig enthält die $PSSessionOption Variable ein PSSessionOption-Objekt mit den Standardwerten für alle Optionen, wie unten dargestellt.

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

Beschreibungen dieser Optionen und weitere Informationen finden Sie unter New-PSSessionOption. Weitere Informationen zu Remotebefehlen und -sitzungen finden Sie unter about_Remote und about_PSSessions.

Verwenden Sie zum Ändern des Werts der Einstellungsvariablen das Cmdlet , um ein PSSessionOption-Objekt mit den von Ihnen $PSSessionOption New-PSSessionOption bevorzugten Optionswerten zu erstellen. Speichern Sie die Ausgabe in einer Variablen namens $PSSessionOption .

$PSSessionOption = New-PSSessionOption -NoCompression

Um die $PSSessionOption Einstellungsvariable in jeder PowerShell-Sitzung zu verwenden, fügen Sie Ihrem PowerShell-Profil einen Befehl hinzu, der die New-PSSessionOption $PSSessionOption Variable erstellt. Weitere Informationen finden Sie unter about_Profiles.

Sie können benutzerdefinierte Optionen für eine bestimmte Remotesitzung festlegen. Die von Ihnen festgelegten Optionen haben Vorrang vor den Systemeinstellungen und dem Wert der $PSSessionOption Einstellungsvariablen.

Verwenden Sie zum Festlegen benutzerdefinierter Sitzungsoptionen das New-PSSessionOption Cmdlet , um ein PSSessionOption-Objekt zu erstellen. Verwenden Sie dann das PSSessionOption-Objekt als Wert des SessionOption-Parameters in Cmdlets, die eine Sitzung erstellen, z. B. New-PSSession , und Enter-PSSession Invoke-Command .

$Transcript

Wird von Start-Transcript verwendet, um den Namen und Speicherort der Transkriptdatei anzugeben. Wenn Sie keinen Wert für den Path-Parameter angeben, verwendet den Pfad im Wert Start-Transcript der globalen $Transcript Variablen. Wenn Sie diese Variable nicht erstellt haben, Start-Transcript speichert die Transkripte im $Home\My Documents Verzeichnis als \PowerShell_transcript.<time-stamp>.txt Dateien.

$VerbosePreference

Bestimmt, wie PowerShell auf ausführliche Meldungen reagiert, die von einem Skript, Cmdlet oder Anbieter generiert werden, z. B. auf die vom Write-Verbose-Cmdlet generierten Nachrichten. Ausführliche Meldungen beschreiben die Aktionen, die zum Ausführen eines Befehls ausgeführt werden.

Standardmäßig werden keine ausführlichen Meldungen angezeigt. Sie können dieses Verhalten jedoch ändern, indem Sie den Wert von $VerbosePreference ändern.

Die $VerbosePreference Variable nimmt eine der folgenden Ankn. ActionPreference -Enumerationswerte: SilentlyContinue, Stop, Continue, Ignore , Suspend oder Break.

Die folgenden Werte sind gültig:

  • Beenden: Zeigt die ausführliche Meldung und eine Fehlermeldung an und beendet dann die Ausführung.
  • Befragen: Zeigt die ausführliche Meldung an und zeigt dann eine Eingabeaufforderung an, die Sie fragt, ob Sie fortfahren möchten.
  • Continue: Zeigt die ausführliche Meldung an und fährt dann mit der Ausführung fort.
  • SilentlyContinue: (Standard) Zeigt die ausführliche Meldung nicht an. Setzt die Ausführung fort.

Sie können den allgemeinen Verbose-Parameter eines Cmdlets verwenden, um die ausführlichen Meldungen für einen bestimmten Befehl anzuzeigen oder auszublenden. Weitere Informationen findest du unter about_CommonParameters.

Beispiele

Diese Beispiele zeigen die Auswirkungen der verschiedenen Werte von und des $VerbosePreference Verbose-Parameters, um den Einstellungswert zu überschreiben.

In diesem Beispiel wird der Effekt des SilentlyContinue-Werts veranschaulicht, bei dem es sich um den Standardwert handelt. Der Befehl verwendet den Message-Parameter, schreibt jedoch keine Nachricht in die PowerShell-Konsole.

Write-Verbose -Message "Verbose message test."

Wenn der Verbose-Parameter verwendet wird, wird die Meldung geschrieben.

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

Dieses Beispiel zeigt die Auswirkung des Continue-Werts. Die $VerbosePreference Variable ist auf Continue festgelegt, und die Meldung wird angezeigt.

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

In diesem Beispiel wird der Verbose-Parameter mit einem Wert von $false verwendet, der den Continue-Wert überschreibt. Die Meldung wird nicht angezeigt.

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

Dieses Beispiel zeigt die Auswirkung des Stop-Werts. Die $VerbosePreference Variable ist auf Beenden festgelegt, und die Meldung wird angezeigt. Der Befehl wird beendet.

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

In diesem Beispiel wird der Verbose-Parameter mit einem Wert von $false verwendet, der den Stop-Wert überschreibt. Die Meldung wird nicht angezeigt.

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

In diesem Beispiel wird die Auswirkung des Werts " Abfragen" veranschaulicht. Die $VerbosePreference Variable ist auf Wird abfragt festgelegt. Die Meldung wird angezeigt, und der Benutzer wird zur Bestätigung aufgefordert.

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

In diesem Beispiel wird der Verbose-Parameter mit einem Wert von $false verwendet, der den Wert Von Der Abfragung überschreibt. Der Benutzer wird nicht dazu aufgefordert, und die Meldung wird nicht angezeigt.

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

$WarningPreference

Bestimmt, wie PowerShell auf Warnmeldungen reagiert, die von einem Skript, Cmdlet oder Anbieter generiert werden, z. B. die vom Write-Warning-Cmdlet generierten Meldungen.

Standardmäßig werden Warnmeldungen angezeigt, und die Ausführung wird fortgesetzt. Sie können dieses Verhalten jedoch ändern, indem Sie den Wert von $WarningPreference ändern.

Die $WarningPreference Variable nimmt eine der folgenden Ankn. ActionPreference -Enumerationswerte: SilentlyContinue, Stop, Continue, Ignore , Suspend oder Break.

Die folgenden Werte sind gültig:

  • Beenden: Zeigt die Warnmeldung und eine Fehlermeldung an und beendet dann die Ausführung.
  • Wird abfragt: Zeigt die Warnmeldung an und fordert dann zur Eingabe der Berechtigung auf, um fortzufahren.
  • Continue: (Standard) Zeigt die Warnmeldung an und fährt dann mit der Ausführung fort.
  • SilentlyContinue: Zeigt die Warnmeldung nicht an. Setzt die Ausführung fort.

Sie können den allgemeinen WarningAction-Parameter eines Cmdlets verwenden, um zu bestimmen, wie PowerShell auf Warnungen von einem bestimmten Befehl reagiert. Weitere Informationen findest du unter about_CommonParameters.

Beispiele

Diese Beispiele zeigen die Auswirkungen der verschiedenen Werte von $WarningPreference . Der WarningAction-Parameter überschreibt den Einstellungswert.

In diesem Beispiel wird die Auswirkung des Standardwerts Continue veranschaulicht.

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

In diesem Beispiel wird der WarningAction-Parameter mit dem Wert SilentlyContinue verwendet, um die Warnung zu unterdrücken. Die Meldung wird nicht angezeigt.

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

In diesem Beispiel wird die $WarningPreference Variable in den SilentlyContinue-Wert geändert. Die Meldung wird nicht angezeigt.

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

In diesem Beispiel wird der WarningAction-Parameter verwendet, um zu beenden, wenn eine Warnung generiert wird.

$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

In diesem Beispiel wird die $WarningPreference Variable in den Wert Von Der Abfragung geändert. Der Benutzer wird zur Bestätigung aufgefordert.

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

In diesem Beispiel wird der WarningAction-Parameter mit dem Wert SilentlyContinue verwendet. Der Befehl wird weiterhin ausgeführt, und es wird keine Meldung angezeigt.

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

In diesem Beispiel wird der $WarningPreference Wert in Stop geändert.

$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

In diesem Beispiel wird die WarningAction mit dem Wert Für die Anfrage verwendet. Der Benutzer wird aufgefordert, wenn eine Warnung auftritt.

$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

Bestimmt, ob WhatIf automatisch für jeden Befehl aktiviert wird, der es unterstützt. Wenn WhatIf aktiviert ist, meldet das Cmdlet die erwartete Auswirkung des Befehls, führt den Befehl jedoch nicht aus.

Die folgenden Werte sind gültig:

  • False (0, nicht aktiviert): (Standard) WhatIf wird nicht automatisch aktiviert. Verwenden Sie zum manuellen Aktivieren den WhatIf-Parameter des Cmdlets.
  • True (1, aktiviert): WhatIf wird automatisch für jeden Befehl aktiviert, der es unterstützt. Benutzer können den WhatIf-Parameter mit dem Wert False verwenden, um ihn manuell zu deaktivieren, z. -WhatIf:$false B. .

Beispiele

Diese Beispiele zeigen die Auswirkungen der verschiedenen Werte von $WhatIfPreference . Sie zeigen, wie der WhatIf-Parameter verwendet wird, um den Einstellungswert für einen bestimmten Befehl zu überschreiben.

Dieses Beispiel zeigt die Auswirkung der $WhatIfPreference Variablen, die auf den Standardwert False festgelegt ist. Verwenden Get-ChildItem Sie , um zu überprüfen, ob die Datei vorhanden ist. Remove-Item löscht die Datei. Nachdem die Datei gelöscht wurde, können Sie den Löschvorgang mit Get-ChildItem überprüfen.

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

Dieses Beispiel zeigt die Auswirkung der Verwendung des WhatIf-Parameters, wenn der Wert $WhatIfPreference von False ist.

Überprüfen Sie, ob die Datei vorhanden ist.

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

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

Verwenden Sie den WhatIf-Parameter, um das Ergebnis des Löschversuchs der Datei zu bestimmen.

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

Stellen Sie sicher, dass die Datei nicht gelöscht wurde.

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

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

Dieses Beispiel zeigt die Auswirkung der $WhatIfPreference Variablen, die auf den Wert True festgelegt ist. Wenn Sie verwenden, um eine Datei zu löschen, wird der Pfad der Datei angezeigt, aber Remove-Item die Datei wird nicht gelöscht.

Versuchen Sie, eine Datei zu löschen. Es wird eine Meldung darüber angezeigt, was passieren würde, wenn ausgeführt würde, aber die Datei Remove-Item nicht gelöscht wird.

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

Verwenden Get-ChildItem Sie , um sicherzustellen, dass die Datei nicht gelöscht wurde.

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

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

In diesem Beispiel wird gezeigt, wie eine Datei gelöscht wird, wenn der Wert $WhatIfPreference von true ist. Er verwendet den WhatIf-Parameter mit dem Wert $false . Verwenden Get-ChildItem Sie , um zu überprüfen, ob die Datei gelöscht wurde.

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

Im Folgenden finden Sie Beispiele für das Get-Process Cmdlet, das WhatIf nicht unterstützt und Stop-Process WhatIf unterstützt. Der $WhatIfPreference Wert der Variablen ist True.

Get-Processunterstützt WhatIf nicht. Wenn der Befehl ausgeführt wird, wird der Winword-Prozess angezeigt.

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 unterstützt WhatIf. Der Winword-Prozess wird nicht beendet.

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

Sie können das Stop-Process WhatIf-Verhalten überschreiben, indem Sie den WhatIf-Parameter mit dem Wert $false verwenden. Der Winword-Prozess wird beendet.

Stop-Process -Name Winword -WhatIf:$false

Verwenden Sie , um zu überprüfen, ob der Winword-Prozess beendet Get-Process wurde.

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

Siehe auch

about_Automatic_Variables

about_CommonParameters

about_Environment_Variables

about_Profiles

about_Remote

about_Scopes

about_Variables