about_Preference_Variables

Kurze Beschreibung

Variablen, die das Verhalten von PowerShell anpassen.

Lange Beschreibung

PowerShell enthält einen Satz von Variablen, mit denen Sie ihr 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 außer Kraft setzen können.

In der folgenden Tabelle sind die Einstellungsvariablen und deren 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 (keine)
$PSModuleAutoLoadingPreference All
$PSSessionApplicationName 'wsman'
$PSSessionConfigurationName 'http://schemas.microsoft.com/powershell/Microsoft.PowerShell'
$PSSessionOption PSSessionOption-Objekt
$Transcript $Null (keine)
$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 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

Dieses Dokument beschreibt jede der Einstellungsvariablen.

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

 $ConfirmPreference
High

Um den Wert einer Variablen zu ändern, verwenden Sie eine Zuordnungsanweisungen. Die folgende Anweisung ändert z. B. den Wert des $ConfirmPreference Parameters auf Medium.

$ConfirmPreference = "Medium"

Die werte, die Sie für die aktuelle PowerShell-Sitzung festlegen, sind spezifisch. Um Variablen in allen PowerShell-Sitzungen wirksam 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 Remotecomputers $DebugPreference , wie PowerShell auf Das Debuggen von Nachrichten reagiert.

Weitere Informationen zu Remotebefehlen finden Sie unter about_Remote.

$ConfirmPreference

Bestimmt, ob PowerShell Sie automatisch zur Bestätigung aufgefordert, bevor Sie ein Cmdlet oder eine Funktion ausführen.

Die $ConfirmPreference Variable nimmt eine der folgenden Aktionen ein.ConfirmImpact Aufzählungswerte: Hoch, Mittel, Niedrig oder Keine.

Cmdlets und Funktionen werden einem Risiko von High, Medium oder Low zugewiesen. Wenn der Wert der $ConfirmPreference Variable kleiner oder gleich dem Risiko ist, das einem Cmdlet oder einer Funktion zugewiesen ist, fordert PowerShell automatisch eine Bestätigung ein, bevor Sie das Cmdlet oder die Funktion ausführen.

Wenn der Wert der $ConfirmPreference Variable Keine ist, fordert PowerShell sie nie automatisch auf, 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 $ConfirmPreference Sie den Wert der Variablen.

Verwenden Sie zum Außerkraftsetzen des Befehls für einen einzelnen Befehl den $ConfirmPreferenceParameter "Bestätigen " eines Cmdlets oder einer Funktion. Um eine Bestätigung anzufordern, verwenden Sie -Confirm. Um die Bestätigung zu unterdrücken, verwenden Sie -Confirm:$false.

Gültige Werte von $ConfirmPreference:

  • Keine: PowerShell wird nicht automatisch aufgefordert. Verwenden Sie zum Anfordern der Bestätigung eines bestimmten Befehls den Parameter "Bestätigen " des Cmdlets oder der Funktion.
  • Niedrig: PowerShell fordert eine Bestätigung ein, bevor Cmdlets oder Funktionen mit einem niedrigen, mittleren oder hohen Risiko ausgeführt werden.
  • Mittel: PowerShell fordert eine Bestätigung ein, bevor Cmdlets oder Funktionen mit einem mittleren oder hohen Risiko ausgeführt werden.
  • Hoch: PowerShell fordert eine Bestätigung auf, bevor Cmdlets oder Funktionen mit einem hohen Risiko ausgeführt werden.

Ausführliche Erläuterung

PowerShell kann Sie automatisch zur Bestätigung auffordern, bevor Sie eine Aktion ausführen. Wenn beispielsweise Cmdlet oder Funktion das System erheblich beeinflusst, um Daten zu löschen oder eine erhebliche Menge von 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, die als "ConfirmImpact" bezeichnet wird. Benutzer können dies nicht ändern.

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

Da die meisten Cmdlets und Funktionen den Standardwert " ConfirmImpact", " Medium" und den Standardwert $ConfirmPreference " High" verwenden, tritt die automatische Bestätigung selten auf. Sie können die automatische Bestätigung jedoch aktivieren, indem Sie den Wert von $ConfirmPreference"Mittel " oder "Niedrig" ändern.

Beispiele

In diesem Beispiel wird der Effekt des Standardwerts der $ConfirmPreference Variablen " High" dargestellt. Der Hohe Wert bestätigt nur Hochrisiko-Cmdlets und -funktionen. Da die meisten Cmdlets und Funktionen mittleres Risiko sind, werden sie nicht automatisch bestätigt und Remove-Item die Datei gelöscht. Das Hinzufügen zum Befehl -Confirm fordert den Benutzer zur Bestätigung auf.

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

Verwenden Sie -Confirm die Bestätigung, 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"):

Im folgenden Beispiel wird der Effekt des Änderns des Werts von $ConfirmPreference"Medium" veranschaulicht. Da die meisten Cmdlets und Funktionen mittleres Risiko sind, werden sie automatisch bestätigt. Um die Bestätigungsaufforderung für einen einzelnen Befehl zu unterdrücken, verwenden Sie den Parameter "Bestätigen " mit einem Wert von $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

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

Die $DebugPreference Variable nimmt eine der folgenden Aktionen ein.ActionPreferenceAufzählungswerte: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend oder Break.

Einige Cmdlets zeigen Debugnachrichten an, die in der Regel technische Nachrichten für Programmierer und technische Supportexperten sind. Standardmäßig werden Debugnachrichten nicht angezeigt, aber Sie können Debuggen von Nachrichten anzeigen, indem Sie den Wert ändern $DebugPreference.

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

Die folgenden Werte sind gültig:

  • Stop: Zeigt die Debugnachricht an und beendet die Ausführung. Schreibt einen Fehler in die Konsole.
  • Fragen Sie: Zeigt die Debugnachricht an und fragt Sie, ob Sie fortfahren möchten. Wenn der Befehl zum Generieren einer Debugnachricht konfiguriert ist, wird der Wert der $DebugPreference Variablen in "Inquire" geändert.
  • Weiter: Zeigt die Debugnachricht an und wird mit der Ausführung fortgesetzt.
  • SilentlyContinue: (Standard) Kein Effekt. Die Debugnachricht wird nicht angezeigt und die Ausführung wird ohne Unterbrechung fortgesetzt.

Beispiele

In den folgenden Beispielen wird der Effekt angezeigt, dass die Werte $DebugPreference geändert werden, wenn ein Write-Debug Befehl in die Befehlszeile eingegeben wird. Die Änderung wirkt sich auf alle Debugnachrichten aus, einschließlich von Cmdlets und Skripts generierten Nachrichten. Die Beispiele zeigen den Debugparameter an, der die Debugnachrichten im Zusammenhang mit einem einzelnen Befehl anzeigt oder ausblendet.

In diesem Beispiel wird der Effekt des Standardwerts der $DebugPreference Variable, SilentlyContinue, dargestellt. Standardmäßig wird die Debugnachricht des Write-Debug Cmdlets nicht angezeigt und die Verarbeitung fortgesetzt. Wenn der Debugparameter verwendet wird, wird die Einstellung für einen einzelnen Befehl außer Kraft gesetzt. Die Debugnachricht wird angezeigt.

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

In diesem Beispiel wird der Effekt $DebugPreference mit dem Wert "Weiter " gezeigt. Die Debugnachricht wird angezeigt, und der Befehl verarbeitet weiterhin.

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

In diesem Beispiel wird der Debugparameter mit einem Wert $false verwendet, um die Nachricht für einen einzelnen Befehl zu unterdrücken. Die Debugnachricht wird nicht angezeigt.

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

In diesem Beispiel wird der Effekt $DebugPreference des Festlegens auf den Stoppwert dargestellt. Die Debugnachricht 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 Debugparameter mit einem Wert $false verwendet, um die Nachricht für einen einzelnen Befehl zu unterdrücken. Die Debugnachricht wird nicht angezeigt und die Verarbeitung wird nicht beendet.

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

In diesem Beispiel wird der Effekt $DebugPreference des Festlegens auf den Abfragewert dargestellt. Die Debugnachricht 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 Debugparameter mit einem Wert $false verwendet, um die Nachricht für einen einzelnen Befehl zu unterdrücken. Die Debugnachricht wird nicht angezeigt und die Verarbeitung wird fortgesetzt.

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

$ErrorActionPreference

Bestimmt, wie PowerShell auf einen nicht terminierenden Fehler reagiert, ein Fehler, der die Cmdletverarbeitung nicht beendet. Beispielsweise in 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 Aktionen ein.ActionPreferenceAufzählungswerte: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend oder Break.

Sie können den allgemeinen Parameter " ErrorAction " eines Cmdlets verwenden, um die Einstellung für einen bestimmten Befehl außer Kraft zu setzen.

Die folgenden Werte sind gültig:

  • Break - Geben Sie den Debugger ein, wenn ein Fehler auftritt oder wenn eine Ausnahme ausgelöst wird.
  • Fortsetzen: (Standard) Zeigt die Fehlermeldung an und führt die Ausführung fort.
  • Ignorieren: Unterdrückt die Fehlermeldung und führt den Befehl weiter aus. Der Wert "Ignorieren" ist für die Verwendung pro Befehl vorgesehen, nicht für die Verwendung als gespeicherte Einstellung. Ignorieren ist kein gültiger Wert für die $ErrorActionPreference Variable.
  • Abfragen: Zeigt die Fehlermeldung an und fragt Sie, ob Sie fortfahren möchten.
  • SilentlyContinue: Kein Effekt. Die Fehlermeldung wird nicht angezeigt und die Ausführung wird ohne Unterbrechung fortgesetzt.
  • Stop: Zeigt die Fehlermeldung an und beendet die Ausführung. Zusätzlich zum generierten Fehler generiert der Stop-Wert ein ActionPreferenceStopException-Objekt zum Fehlerdatenstrom. Datenstrom
  • Angehalten: Wird automatisch ein Workflowauftrag angehalten, um eine weitere Untersuchung zu ermöglichen. Nach der Untersuchung kann der Workflow fortgesetzt werden. Der Wert "Suspend " ist für die Verwendung pro Befehl vorgesehen, nicht für die Verwendung als gespeicherte Einstellung. Suspend ist kein gültiger Wert für die $ErrorActionPreference Variable.

$ErrorActionPreference und der ErrorAction-Parameter wirkt sich nicht darauf aus, wie PowerShell auf die Beendigung von Fehlern reagiert, die die Cmdletverarbeitung beenden. Weitere Informationen zum allgemeinen ErrorAction-Parameter finden Sie unter about_CommonParameters.

Beispiele

In diesen Beispielen wird der Effekt der unterschiedlichen Werte der $ErrorActionPreference Variablen gezeigt. Der ErrorAction-Parameter wird verwendet, um den $ErrorActionPreference Wert außer Kraft zu setzen.

In diesem Beispiel wird der $ErrorActionPreferenceStandardwert fortgesetzt. Ein nicht beendeter Fehler wird generiert. Die Nachricht 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", "Inquire" 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 der $ErrorActionPreference Satz auf SilentlyContinue dargestellt. 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 der $ErrorActionPreference Satz auf "Stop" dargestellt. Außerdem wird das zusätzliche Objekt angezeigt, das für die $Error Variable generiert wird.

# 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 verwendet einen der ErrorView Enumerationswerte: NormalView, CategoryView oder ConciseView.

Die folgenden Werte sind gültig:

  • ConciseView: (Standard) Stellt eine prägnante Fehlermeldung und eine umgestaltete Ansicht für erweiterte Modul-Generatoren bereit. Wenn der Fehler aus der Befehlszeile stammt, handelt es sich um eine einzelne Zeilenfehlermeldung. Andernfalls erhalten Sie eine Fehlermeldung mit mehreren Zeilen, die den Fehler und einen Zeiger auf den Fehler enthält, der zeigt, wo es in dieser Zeile auftritt. Wenn das Terminal virtuelles Terminal unterstützt, werden ANSI-Farbcodes verwendet, um Farbakzent bereitzustellen. Die Akzentfarbe kann unter $Host.PrivateData.ErrorAccentColor" geändert werden. Verwenden Sie Get-Error 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 entwickelt wurde. Besteht aus einer Beschreibung des Fehlers und dem Namen des Objekts, das an dem Fehler beteiligt ist.

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

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

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

Beispiele

In diesem Beispiel wird gezeigt, wie ein Fehler angezeigt wird, wenn der Wert des Standardwerts $ErrorView " ConciseView" ist. Get-ChildItem wird verwendet, um ein nicht vorhandenes Verzeichnis zu finden.

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

In diesem Beispiel wird gezeigt, wie ein Fehler angezeigt wird, wenn der Wert des Standardwerts $ErrorView " ConciseView" ist. Script.ps1 wird ausgeführt und löst einen Fehler aus der Anweisung aus Get-Item .

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

In diesem Beispiel wird gezeigt, wie ein Fehler angezeigt wird, wenn der Wert $ErrorView in NormalView geändert wird. Get-ChildItem wird verwendet, um eine nicht vorhandene Datei zu finden.

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

In diesem Beispiel wird gezeigt, wie derselbe Fehler angezeigt wird, wenn der Wert $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 sich der Wert $ErrorView nur auf die Fehleranzeige auswirkt. Die Struktur des Fehlerobjekts, das in der $Error automatischen Variable gespeichert ist, wird nicht geändert. Informationen zu der $Error automatischen Variable finden Sie unter about_automatic_variables.

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

$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 aufgezählte Elemente in einer Anzeige enthalten sind. Diese Variable wirkt sich nicht auf die zugrunde liegenden Objekte aus, nur die Anzeige. Wenn der Wert weniger als die Anzahl der aufgezählten Elemente ist, fügt PowerShell einen Auslassungszeichen $FormatEnumerationLimit (...) hinzu, um Elemente anzugeben, die nicht angezeigt werden.

Gültige Werte: Ganze Zahlen (Int32)

Standardwert: 4

Beispiele

In diesem Beispiel wird gezeigt, wie Sie die $FormatEnumerationLimit Variable verwenden, um die Anzeige von aufgezählten Elementen zu verbessern.

Der Befehl in diesem Beispiel generiert eine Tabelle, in der alle auf dem Computer ausgeführten Dienste in zwei Gruppen aufgelistet werden: eine für die Ausführung von Diensten und eine für beendete Dienste. Es verwendet einen Get-Service Befehl, um alle Dienste abzurufen, und sendet dann die Ergebnisse über die Pipeline an das Group-Object Cmdlet, die die Ergebnisse durch den Dienststatus gruppiert.

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

Suchen Sie den aktuellen Wert von $FormatEnumerationLimit.

$FormatEnumerationLimit
4

Listet alle Dienste auf, die nach Status gruppiert sind. Es gibt maximal vier Dienste, die in der Gruppenspalte für jeden Status aufgeführt sind, da $FormatEnumerationLimit ein Wert von 4 ist.

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 aufgeführten Elemente zu erhöhen, erhöhen Sie den Wert auf $FormatEnumerationLimit1000. Verwenden Get-Service Sie die Dienste und Group-Object zeigen Sie die Dienste an.

$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 Sie Format-Table den Umbruchparameter , 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 der $InformationPreference Variable können Sie Informationsstromeinstellungen festlegen, die Benutzern angezeigt werden sollen. Insbesondere informationale Nachrichten, die Sie zu Befehlen oder Skripts hinzugefügt haben, indem Sie das Cmdlet "Write-Information " hinzufügen. 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 verwendet eine derActionPreference Enumerationswerte: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend oder Break.

Die folgenden Werte sind gültig:

  • Stopp: Stoppt einen Befehl oder ein Skript bei einem Vorkommen des Write-Information Befehls.
  • Anfragen: Zeigt die informationale Meldung an, die Sie in einem Write-Information Befehl angeben, und fragt dann, ob Sie fortfahren möchten.
  • Weiter: Zeigt die Informationsmeldung an und wird fortgesetzt.
  • "Anhalten" ist nur für Workflows verfügbar, die in PowerShell 6 und darüber hinaus nicht unterstützt werden.
  • SilentlyContinue: (Standard) Kein Effekt. Die Informationsnachrichten werden nicht angezeigt, und das Skript wird ohne Unterbrechung fortgesetzt.

$Log*-Ereignis

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

Die Log*- Ereigniseinstellungsvariablen sind wie folgt:

  • $LogCommandHealthEvent: Protokolliert Fehler und Ausnahmen bei der Initialisierung und Verarbeitung von Befehlen. Der Standardwert ist $false (nicht protokolliert).
  • $LogCommandLifecycleEvent: Protokolliert das Starten und Beenden von Befehlen und Befehlspipelinen und Sicherheitsausnahmeregelungen 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, Nachschlagefehler und Aufruffehler. Der Standardwert ist $true (protokolliert).
  • $LogProviderLifecycleEvent: Protokolliert das Hinzufügen und Entfernen von PowerShell-Anbietern. Der Standardwert ist $true (protokolliert). Informationen zu PowerShell-Anbietern finden Sie unter about_Providers.

Geben Sie zum Aktivieren eines Log*-Ereignisses die Variable mit einem Wert von $true, z. B.:

$LogCommandLifeCycleEvent = $true

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

$LogCommandLifeCycleEvent = $false

Die von Ihnen aktivierten Ereignisse sind nur für die aktuelle PowerShell-Konsole wirksam. 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

Um die Anzahl der befehle zu ermitteln, die im Befehlsverlauf gespeichert sind, geben Sie Folgendes ein:

(Get-History).Count

Verwenden Sie das Get-History Cmdlet, um die In Ihrem Sitzungsverlauf gespeicherten Befehle 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 ihrer Sitzung ändern, indem Sie die Eingabe $OFS$OFS="<value>"ausführen.

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 im Code geändert wurde.

Beispiele

In diesem Beispiel wird gezeigt, dass ein Leerzeichen verwendet wird, um die Werte zu trennen, wenn ein Array in eine Zeichenfolge konvertiert wird. In diesem Fall wird ein Array mit ganzzahligen Zahlen in einer Variablen gespeichert, und dann wird die Variable als Zeichenfolge umgewandelt.

$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 ihm einen Wert zuweisen. Die Variable muss benannt $OFSwerden.

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

Um das Standardverhalten wiederherzustellen, können Sie dem Wert der $OFS Variablen ein Leerzeichen (" ") zuweisen oder löschen. Die folgenden Befehle löschen die Variable, und stellen Sie dann sicher, dass das Trennzeichen ein Leerzeichen ist.

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

$OutputEncoding

Bestimmt die Zeichencodierungsmethode, die PowerShell verwendet, wenn sie Text an andere Anwendungen sendet.

Wenn beispielsweise eine Anwendung 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 wie folgt: Objekte, die von einer Codierungsklasse abgeleitet wurden, z. B. ASCIIEncoding, UTF7Encoding, UTF8Encoding, UTF32Encoding und 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 findet den Wert von $OutputEncoding. Da der Wert ein Codierungsobjekt ist, zeigen Sie nur dessen EncodingName-Eigenschaft an.

$OutputEncoding.EncodingName

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

findstr <Unicode-characters>

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

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

Nach der Codierungsänderung findet der befehlfindstr.exe die Unicode-Zeichen.

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

$ProgressPreference

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

Die $ProgressPreference Variable verwendet eine derActionPreference Enumerationswerte: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend oder Break.

Die folgenden Werte sind gültig:

  • Stopp: Zeigt die Statusleiste nicht an. Stattdessen wird eine Fehlermeldung angezeigt und die Ausführung beendet.
  • Anfragen: Zeigt die Statusleiste nicht an. Fordert die Berechtigung zum Fortsetzen auf. Wenn Sie mit Y oder A, wird die Statusleiste angezeigt.
  • Weiter: (Standard) Zeigt die Statusleiste an und wird mit der Ausführung fortgesetzt.
  • SilentlyContinue: Führt den Befehl aus, zeigt jedoch nicht die Statusleiste an.

$PSDefaultParameterValues

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

$PSDefaultParameterValues wurde in PowerShell 3.0 eingeführt.

Weitere Informationen zu dieser Einstellungsvariable finden Sie unter about_Parameters_Default_Values.

$PSEmailServer

Gibt den Standardmäßigen 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 Cmdlet Send-MailMessage .

$PSModuleAutoloadingPreference

Aktiviert und deaktiviert den automatischen Import von Modulen in der Sitzung. Alles ist die Standardeinstellung. Um ein Modul zu importieren, rufen Oder verwenden Sie einen beliebigen Befehl im Modul. Verwenden Sie z. B. Get-Command. Die $PSModuleAutoloadingPreference Variable ist standardmäßig nicht vorhanden. Das Standardverhalten, wenn die Variable nicht definiert ist, ist identisch mit $PSModuleAutoloadingPreference = 'All'.

Unabhängig vom Wert der Variable können Sie import-Module verwenden, um ein Modul zu importieren.

Die $PSModuleAutoloadingPreference Variable nimmt eine der folgenden Aktionen ein.PSModuleAutoLoadingPreference Aufzählungswerte: Keine, ModuleQualified oder All.

Gültige Werte sind:

  • Alle: Module werden automatisch auf dem ersten Einsatz importiert.
  • ModulQualified: Module werden automatisch importiert, wenn ein Benutzer den modulqualifizierten Namen eines Befehls im Modul verwendet. Wenn der Benutzer MyModule\MyCommandbeispielsweise eingibt, importiert PowerShell das MyModule-Modul .
  • Keine: Automatisches Importieren 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 Web Services for Management (WS-Management) verwendet. Weitere Informationen finden Sie unter "Informationen zur Windows-Remoteverwaltung".

Der Systemstandardanwendungsname ist WSMAN, sie können jedoch 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 WSMANbeispielsweise .

http://Server01:8080/WSMAN

Der Standardanwendungsname wird verwendet, wenn der Remotebefehl keinen Verbindungs-URI oder einen Anwendungsnamen angibt.

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

Um den Systemstandard und den Wert dieser Variable außer Kraft zu setzen, und wählen Sie einen anderen Anwendungsnamen für eine bestimmte Sitzung aus, verwenden Sie die Parameter "ConnectionURI" oder "ApplicationName" der Cmdlets "New-PSSession", "Enter-PSSession" oder "Invoke-Command".

Die $PSSessionApplicationName Einstellungsvariable wird auf dem lokalen Computer festgelegt, gibt jedoch einen Listener auf dem Remotecomputer an. Wenn der von Ihnen angegebene 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 ist auf dem lokalen Computer festgelegt, gibt jedoch eine Sitzungskonfiguration an, die sich auf dem Remotecomputer befindet.

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

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

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

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

Sie können die Standardeinstellung außer Kraft setzen und eine andere Sitzungskonfiguration für eine bestimmte Sitzung auswählen, indem Sie den ConfigurationName-Parameter des New-PSSession, Enter-PSSessionoder Invoke-Command Cmdlets verwenden.

Sie können den Wert dieser Variable jederzeit ändern. Denken Sie 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, die die Sitzungskonfiguration verwendet, fehl.

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 lokalen Sitzungskonfigurationen verwenden, um festzustellen, welche Benutzer sie verwenden können.

$PSSessionOption

Legt die Standardwerte für erweiterte Benutzeroptionen in einer Remotesitzung fest. Diese Optionseinstellungen außer Kraft setzen die Systemstandardwerte für Sitzungsoptionen außer Kraft.

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 wendet sich beispielsweise während der Sitzung an der Datenkomprimierung.

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.

Um den Wert der $PSSessionOption Einstellungsvariable zu ändern, verwenden Sie das New-PSSessionOption Cmdlet, um ein PSSessionOption-Objekt mit den gewünschten Optionswerten zu erstellen. Speichern Sie die Ausgabe in einer Variablen namens $PSSessionOption.

$PSSessionOption = New-PSSessionOption -NoCompression

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

Sie können benutzerdefinierte Optionen für eine bestimmte Remotesitzung festlegen. Die Optionen, die Sie festlegen, haben Vorrang vor den Systemstandardeinstellungen und den Wert der $PSSessionOption Einstellungsvariable.

Um benutzerdefinierte Sitzungsoptionen festzulegen, verwenden Sie 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 New-PSSession. B. , Enter-PSSessionund Invoke-Command.

$Transcript

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

$VerbosePreference

Bestimmt, wie PowerShell auf verbose Nachrichten reagiert, die von einem Skript, Cmdlet oder Anbieter generiert werden, z. B. die von dem Cmdlet "Write-Verbose " generierten Nachrichten. Verbose Nachrichten beschreiben die ausgeführten Aktionen, um einen Befehl auszuführen.

Standardmäßig werden verbose Nachrichten nicht angezeigt, aber Sie können dieses Verhalten ändern, indem Sie den Wert von $VerbosePreference.

Die $VerbosePreference Variable nimmt eine der folgenden Aktionen ein.ActionPreferenceAufzählungswerte: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend oder Break.

Die folgenden Werte sind gültig:

  • Stop: Zeigt die ausführliche Nachricht und eine Fehlermeldung an, und beendet dann die Ausführung.
  • Abfragen: Zeigt die verbose Nachricht an, und zeigt dann eine Aufforderung an, die Sie fragt, ob Sie fortfahren möchten.
  • Weiter: Zeigt die verbose Nachricht an und führt dann mit der Ausführung fort.
  • SilentlyContinue: (Standard) Zeigt die verbose Nachricht nicht an. Führt die Ausführung fort.

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

Beispiele

In diesen Beispielen wird der Effekt der unterschiedlichen Werte $VerbosePreference und des Verbose-Parameters angezeigt, um den Einstellungswert außer Kraft zu setzen.

In diesem Beispiel wird der Effekt des SilentlyContinue-Werts dargestellt, der die Standardeinstellung ist. Der Befehl verwendet den Nachrichtenparameter , schreibt jedoch keine Nachricht in die PowerShell-Konsole.

Write-Verbose -Message "Verbose message test."

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

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

In diesem Beispiel wird der Effekt des Fortsetzungswerts dargestellt. Die Variable wird auf "Fortsetzen" festgelegt, und die $VerbosePreference Nachricht wird angezeigt.

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

In diesem Beispiel wird der Parameter Verbose mit einem Wert $false verwendet, der den Wert "Fortsetzung " außer Kraft setzt. Die Nachricht wird nicht angezeigt.

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

In diesem Beispiel wird der Effekt des Stoppwerts dargestellt. Die Variable wird auf "Beenden" festgelegt, und die $VerbosePreference Nachricht 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 $false des Werts "Stop " außer Kraft gesetzt. Die Nachricht wird nicht angezeigt.

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

In diesem Beispiel wird der Effekt des Abfragewerts dargestellt. Die $VerbosePreference Variable wird auf "Inquire" festgelegt. Die Nachricht 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 verwendet, der den Abfragewert$false außer Kraft setzt. Der Benutzer wird nicht aufgefordert, und die Nachricht 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 von dem Cmdlet "Write-Warning " generierten Nachrichten.

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

Die $WarningPreference Variable nimmt eine der folgenden Aktionen ein.ActionPreferenceAufzählungswerte: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend oder Break.

Die folgenden Werte sind gültig:

  • Stop: Zeigt die Warnmeldung und eine Fehlermeldung an, und beendet dann die Ausführung.
  • Abfragen: Zeigt die Warnungsmeldung an und fordert dann die Berechtigung zum Fortsetzen auf.
  • Weiter: (Standard) Zeigt die Warnungsnachricht an, und führt dann die Ausführung fort.
  • SilentlyContinue: Zeigt die Warnmeldung nicht an. Führt die Ausführung fort.

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

Beispiele

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

In diesem Beispiel wird der Effekt des Standardwerts "Weiter" gezeigt.

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

In diesem Beispiel wird der Warnungsparameter mit dem Wert SilentlyContinue verwendet, um die Warnung zu unterdrücken. Die Nachricht wird nicht angezeigt.

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

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

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

In diesem Beispiel wird der Warnungsparameter 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 Abfragewert 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 WarnungAction-Parameter mit dem Wert SilentlyContinue verwendet. Der Befehl wird weiterhin ausgeführt, und es wird keine Nachricht angezeigt.

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

In diesem Beispiel wird der $WarningPreference Wert in "Beenden" 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 Abfragewert 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 ist, der sie unterstützt. Wenn WasIf aktiviert ist, meldet das Cmdlet den erwarteten Effekt des Befehls, führt jedoch den Befehl nicht aus.

Die folgenden Werte sind gültig:

  • False (0, nicht aktiviert): (Standard) WhatIf ist nicht automatisch aktiviert. Um es manuell zu aktivieren, verwenden Sie den Cmdlet-Parameter "WhatIf ".
  • True (1, aktiviert): WhatIf wird automatisch auf jedem Befehl aktiviert, der sie unterstützt. Benutzer können den WhatIf-Parameter mit einem Wert von False verwenden, um es manuell zu deaktivieren, z -WhatIf:$false. B. .

Beispiele

Diese Beispiele zeigen die Wirkung der verschiedenen Werte von $WhatIfPreference. Sie zeigen, wie Sie den WhatIf-Parameter verwenden, um den Einstellungswert für einen bestimmten Befehl außer Kraft zu setzen.

In diesem Beispiel wird der Effekt der Variablen dargestellt, die $WhatIfPreference auf den Standardwert " False" festgelegt ist. Stellen Sie Get-ChildItem sicher, dass die Datei vorhanden ist. Remove-Item löscht die Datei. Nachdem die Datei gelöscht wurde, können Sie die Löschung mit 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

In diesem Beispiel wird der Effekt der Verwendung des WhatIf-Parameters angezeigt, wenn der Wert $WhatIfPreference"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 Versuchs, die Datei zu löschen.

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

Überprüfen Sie, ob 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 der Effekt der Variablen, die $WhatIfPreference auf den Wert " True" festgelegt ist, dargestellt. Wenn Sie Remove-Item eine Datei löschen, wird der Pfad der Datei angezeigt, aber die Datei wird nicht gelöscht.

Versuchen Sie, eine Datei zu löschen. Eine Meldung wird angezeigt, was geschehen würde, wenn Remove-Item es ausgeführt wurde, aber die Datei wird nicht gelöscht.

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

Stellen Sie Get-ChildItem 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

In diesem Beispiel wird gezeigt, wie Sie eine Datei löschen, wenn der Wert $WhatIfPreference"True" ist. Er verwendet den WhatIf-Parameter mit einem Wert von $false. Verwenden Sie Get-ChildItem , 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 das WhatIf unterstützt. Der Wert der $WhatIfPreference Variable lautet "True".

Get-Process unterstü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 WhatIf-Verhalten überschreiben, indem Sie den Stop-ProcessWhatIf-Parameter mit einem Wert von $false. Der Winword-Prozess wird beendet.

Stop-Process -Name Winword -WhatIf:$false

Um zu überprüfen, ob der Winword-Prozess beendet wurde, verwenden Sie 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

Siehe auch