Share via


Informationen zu Einstellungsvariablen

Kurze Beschreibung

Variablen, die das Verhalten von PowerShell anpassen.

Lange Beschreibung

PowerShell enthält eine Reihe 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, die Sie verwenden können, um das Einstellungsverhalten für einen bestimmten Befehl zu überschreiben.

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

Variable Standardwert
$ConfirmPreference High
$DebugPreference SilentlyContinue
$ErrorActionPreference Continue
$ErrorView NormalView
$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 Weiter
$PSDefaultParameterValues (None – leere Hashtabelle)
$PSEmailServer (Keine)
$PSModuleAutoLoadingPreference Alle
$PSSessionApplicationName wsman
$PSSessionConfigurationName https://schemas.microsoft.com/powershell/Microsoft.PowerShell
$PSSessionOption Siehe $PSSessionOption
$Transcript (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 beispielsweise den Wert der $ConfirmPreference Variablen an.

 $ConfirmPreference
High

Um den Wert einer Variablen zu ändern, verwenden Sie eine Zuweisungsanweisung. Beispielsweise ändert die folgende Anweisung den $ConfirmPreference Wert des Parameters in Medium.

$ConfirmPreference = "Medium"

Die von Ihnen festgelegten Werte sind spezifisch für die aktuelle PowerShell-Sitzung. Damit Variablen in allen PowerShell-Sitzungen wirksam sind, 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 Debugnachrichten reagiert.

Weitere Informationen zu Remotebefehlen finden Sie unter about_Remote.

$ConfirmPreference

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

Die $ConfirmPreference gültigen Werte der Variablen sind Hoch, Mittel oder Niedrig. Cmdlets und Funktionen weisen das Risiko "Hoch", "Mittel" oder "Niedrig" auf. 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 Sie das Cmdlet oder die Funktion ausführen.

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

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

Um den für einen einzelnen Befehl zu überschreiben, verwenden Sie den $ConfirmPreferenceConfirm-Parameter 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. Um die Bestätigung eines bestimmten Befehls anzufordern, verwenden Sie den Parameter Confirm des Cmdlets oder der Funktion.
  • Niedrig: PowerShell fordert vor dem Ausführen von Cmdlets oder Funktionen mit einem niedrigen, mittleren oder hohen Risiko zur Bestätigung auf.
  • Mittel: PowerShell fordert vor dem Ausführen von Cmdlets oder Funktionen mit mittlerem oder hohem Risiko zur Bestätigung auf.
  • Hoch: PowerShell fordert vor dem Ausführen von Cmdlets oder Funktionen mit hohem Risiko zur Bestätigung auf.

Ausführliche Erläuterung

PowerShell kann Sie automatisch zur Bestätigung auffordern, bevor Sie eine Aktion ausführen. Beispiel: Cmdlets oder Funktionen wirken sich erheblich auf das System aus, 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 ConfirmImpact. 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 Standardwert ConfirmImpact von Mittel verwenden und der Standardwert hoch $ConfirmPreferenceist, tritt die automatische Bestätigung selten auf. Sie können die automatische Bestätigung jedoch aktivieren, indem Sie den Wert in $ConfirmPreferenceMittel oder Niedrig ändern.

Beispiele

In diesem Beispiel wird die Auswirkung des Standardwerts hoch der $ConfirmPreference Variablen veranschaulicht. 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öscht die Datei. Das Hinzufügen -Confirm zum Befehl fordert den Benutzer zur Bestätigung auf.

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

Verwenden Sie -Confirm zum Anfordern einer Bestätigung.

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 Parameter Confirm 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

$DebugPreference

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

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

Sie können den allgemeinen Parameter Debuggen 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.
  • Anfragen: Zeigt die Debugmeldung an und fragt Sie, ob Sie fortfahren möchten. Wenn der Befehl zum Generieren einer Debugmeldung konfiguriert ist, ändert das Hinzufügen des allgemeinen Debugparameters zu einem Befehl den Wert der $DebugPreference Variablen in Inquire.
  • Weiter: Zeigt die Debugmeldung an und fährt mit der 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 Write-Debug Befehl an der Befehlszeile eingegeben wird. Die Änderung wirkt sich auf alle Debugnachrichten aus, einschließlich nachrichten, die von Cmdlets und Skripts generiert wurden. Die Beispiele zeigen den Debugparameter , mit dem die Debugmeldungen im Zusammenhang mit einem einzelnen Befehl angezeigt oder ausgeblendet werden.

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, wird die Einstellung für einen einzelnen Befehl außer Kraft gesetzt. 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 verarbeitet.

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

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

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

In diesem Beispiel wird die Auswirkung des Festlegens $DebugPreference auf den Stop-Wert veranschaulicht. 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 von $false verwendet, um die Nachricht 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 die Auswirkung des Festlegens $DebugPreference auf den Inquire-Wert veranschaulicht. 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 von $false verwendet, um die Nachricht 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 nicht beendenden Fehler reagiert, ein Fehler, der die Cmdletverarbeitung nicht beendet. Beispielsweise an der Befehlszeile oder in einem Skript, Cmdlet oder Anbieter, z. B. die vom Cmdlet generierten Write-Error Fehler.

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

Die folgenden Werte sind gültig:

  • Weiter: (Standard) Zeigt die Fehlermeldung an und setzt die Ausführung fort.
  • Ignorieren: Unterdrückt die Fehlermeldung und führt den Befehl weiter aus. 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.
  • Anfragen: 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.
  • 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
  • Anhalten: Setzt einen Workflowauftrag automatisch an, um weitere Untersuchungen zu ermöglichen. Nach der Untersuchung kann der Workflow fortgesetzt werden. Der Suspend-Wert 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 Das Beenden von Fehlern reagiert, die die Cmdletverarbeitung beenden. Weitere Informationen zum allgemeinen ErrorAction-Parameter finden Sie unter about_CommonParameters.

Beispiele

In diesen Beispielen wird die Auswirkung der unterschiedlichen Werte der $ErrorActionPreference Variablen veranschaulicht. Der ErrorAction-Parameter wird verwendet, um den $ErrorActionPreference Wert zu überschreiben.

Dieses Beispiel zeigt den $ErrorActionPreference Standardwert Weiter. Ein nicht beendender Fehler wird 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 -Message  'Test Error' ; Write-Host 'Hello World' : Test Error
    + CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
    + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException

Hello World

Dieses Beispiel zeigt den $ErrorActionPreference Standardwert Inquire. Es wird ein Fehler generiert, und es wird eine Aufforderung zur Aktion 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"):

Dieses Beispiel zeigt die $ErrorActionPreference Einstellung auf SilentlyContinue. 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

Dieses Beispiel zeigt die $ErrorActionPreference Einstellung auf Beenden. Außerdem wird das zusätzliche Objekt angezeigt, das für die $Error Variable generiert wurde.

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

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

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

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

$ErrorView

Bestimmt das Anzeigeformat von Fehlermeldungen in PowerShell.

Die folgenden Werte sind gültig:

  • NormalView: (Standard) Eine detaillierte Ansicht, die für die meisten Benutzer entwickelt wurde. Besteht aus einer Beschreibung des Fehlers und dem Namen des am Fehler beteiligten Objekts.

  • CategoryView: Eine prägnante, 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

In diesem Beispiel wird gezeigt, wie ein Fehler angezeigt wird, wenn der Wert von $ErrorView der Standardeinstellung NormalView ist. Get-ChildItem wird verwendet, um nach einer nicht vorhandenen 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 derselbe Fehler angezeigt wird, 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 sich der Wert von $ErrorView nur auf die Fehleranzeige auswirkt. Die Struktur des Fehlerobjekts, das in der $Error automatischen Variablen gespeichert ist, wird nicht geändert. Informationen zur $Error automatischen Variablen finden Sie unter about_automatic_variables.

Der folgende Befehl übernimmt 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 aufgezählte Elemente in einer Anzeige enthalten sind. Diese Variable wirkt sich nicht auf die zugrunde liegenden Objekte aus, nur auf die Anzeige. Wenn der Wert von $FormatEnumerationLimit kleiner als die Anzahl der aufgelisteten Elemente ist, fügt PowerShell eine Auslassungspunkte (...) hinzu, um nicht angezeigte Elemente anzugeben.

Gültige Werte: Ganze Zahlen (Int32)

Standardwert: 4

Beispiele

In diesem Beispiel wird gezeigt, wie die $FormatEnumerationLimit Variable verwendet wird, um die Anzeige aufgezählter Elemente zu verbessern.

Der Befehl in diesem Beispiel generiert eine Tabelle, die alle auf dem Computer ausgeführten Dienste in zwei Gruppen auflistet: eine für ausgeführte Dienste und eine für beendete Dienste. Es verwendet einen Get-Service Befehl, um alle Dienste abzurufen, und sendet die Ergebnisse dann über die Pipeline an das Group-Object Cmdlet, das die Ergebnisse nach dem Dienst gruppiert status.

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

Suchen Sie den aktuellen Wert von $FormatEnumerationLimit.

$FormatEnumerationLimit
4

Listet alle Dienste nach Status gruppiert auf. Es sind maximal vier Dienste in der Spalte Gruppe für jede status aufgeführt, da $FormatEnumerationLimit der Wert 4 aufweist.

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 von $FormatEnumerationLimit auf 1000. Verwenden Sie Get-Service und Group-Object , um die Dienste 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 Sie Format-Table 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 Informationsstreameinstellungen festlegen, die Benutzern angezeigt werden sollen. Insbesondere Informationsmeldungen, die Sie 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 folgenden Werte sind gültig:

  • Beenden: Beendet einen Befehl oder ein Skript bei einem Vorkommen des Write-Information Befehls.
  • Anfragen: 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 wird weiter ausgeführt.
  • 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*Ereignis

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

Die Log* Event-Einstellungsvariablen 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 Sicherheitsausnahmen 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 dem Wert ein $true, z. B.:

$LogCommandLifeCycleEvent = $true

Um einen Ereignistyp zu deaktivieren, geben Sie die Variable mit dem Wert ein $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)

Standardwert: 4096

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

(Get-History).Count

Verwenden Sie Get-History das 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 von $OFS in Ihrer Sitzung ändern, indem Sie eingeben $OFS="<value>".

Hinweis

Wenn Sie den Standardwert eines Leerzeichens (" ") in Ihrer Skript-, Modul- oder Konfigurationsausgabe erwarten, sollten Sie darauf achten, dass der $OFS Standardwert nicht an anderer Stelle im 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 ganzzahliger Werte 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 ihr einen Wert zuweisen. Die Variable muss den Namen haben $OFS.

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

Um das Standardverhalten wiederherzustellen, können Sie dem Wert von $OFS ein Leerzeichen (" ") zuweisen oder die Variable löschen. Die folgenden Befehle löschen die Variable und überprüfen dann, ob das Trennzeichen ein Leerzeichen ist.

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

$OutputEncoding

Bestimmt die Zeichencodierungsmethode, die PowerShell beim Senden von Text an andere Anwendungen verwendet.

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 wie folgt: Von einer Encoding-Klasse abgeleitete Objekte, z. B . ASCIIEncoding, SBCSCodePageEncoding, UTF7Encoding, UTF8Encoding, UTF32Encoding und UnicodeEncoding.

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

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 und nicht in Unicode-Text sendet.

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 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. auf die Statusanzeigen, die vom Cmdlet Write-Progress generiert werden. Das Write-Progress Cmdlet erstellt Statusanzeigen, die die status eines Befehls anzeigen.

Die folgenden Werte sind gültig:

  • Beenden: 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 Fortfahren auf. Wenn Sie mit Y oder Aantworten, wird die Statusleiste angezeigt.
  • Weiter: (Standard) Zeigt die Statusleiste an und fährt mit der Ausführung fort.
  • SilentlyContinue: Führt den Befehl aus, zeigt jedoch nicht die Statusleiste an.

$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 Cmdlet Send-MailMessage .

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

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

Gültige Werte sind:

  • Alle: Module werden automatisch bei der ersten Verwendung importiert. Um ein Modul zu importieren, rufen Sie einen beliebigen Befehl im Modul ab, oder verwenden Sie diesen. Verwenden Sie z. B. Get-Command.
  • ModuleQualified: Module werden nur automatisch importiert, wenn ein Benutzer den modulqualifizierten Namen eines Befehls im Modul verwendet. Wenn der Benutzer beispielsweise eingibt MyModule\MyCommand, importiert PowerShell das Modul MyModule .
  • 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 die WS-Management-Technologie (Webdienste für die Verwaltung) verwendet. Weitere Informationen finden Sie unter Informationen zur Windows-Remoteverwaltung.

Der Standardanwendungsname des Systems lautet 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 lautet WSMANbeispielsweise .

http://Server01:8080/WSMAN

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

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

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

Die $PSSessionApplicationName Einstellungsvariable ist 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 in der aktuellen Sitzung erstellte PSSessions verwendet wird.

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

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

Der Standardwert https://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 vorangestellt:

https://schemas.microsoft.com/PowerShell/

Sie können den Standardwert überschreiben und eine andere Sitzungskonfiguration für eine bestimmte Sitzung auswählen, indem Sie den Parameter ConfigurationName des New-PSSessionCmdlets , Enter-PSSessionoder Invoke-Command verwenden.

Sie können den Wert dieser Variablen jederzeit ändern. Wenn Sie dies tun, denken Sie daran, dass die ausgewählte Sitzungskonfiguration auf dem Remotecomputer vorhanden sein muss. Wenn dies nicht der Fall 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 zu bestimmen, welche Benutzer sie verwenden dürfen.

$PSSessionOption

Legt die Standardwerte für erweiterte Benutzeroptionen in einer Remotesitzung fest. Diese Optionseinstellungen 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 z. B. die Datenkomprimierung während der Sitzung an.

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

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 Einstellungsvariablen zu ändern, verwenden Sie das New-PSSessionOption Cmdlet, um ein PSSessionOption-Objekt mit den von Ihnen bevorzugten Optionswerten zu erstellen. Speichern Sie die Ausgabe in einer Variablen namens $PSSessionOption.

$PSSessionOption = New-PSSessionOption -NoCompression

Um die Einstellungsvariable $PSSessionOption in jeder PowerShell-Sitzung zu verwenden, fügen Sie ihrem PowerShell-Profil einen New-PSSessionOption Befehl hinzu, mit dem die $PSSessionOption Variable erstellt wird. 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 Systemstandardeinstellungen und dem Wert der $PSSessionOption Einstellungsvariablen.

Verwenden Sie das New-PSSessionOption Cmdlet, um benutzerdefinierte Sitzungsoptionen festzulegen, 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 von Start-Transcript verwendet, um den Namen und den Speicherort der Transkriptdatei anzugeben. Wenn Sie keinen Wert für den Path-Parameter angeben, Start-Transcript verwendet den Pfad im Wert der $Transcript globalen Variablen. Wenn Sie diese Variable nicht erstellt haben, Start-Transcript werden die Transkripte im $Home\My Documents Verzeichnis als \PowerShell_transcript.<time-stamp>.txt Dateien gespeichert.

$VerbosePreference

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

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

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

Die folgenden Werte sind gültig:

  • Beenden: Zeigt die ausführliche Meldung und eine Fehlermeldung an und beendet dann die Ausführung.
  • Anfragen: Zeigt die ausführliche Meldung an und zeigt dann eine Eingabeaufforderung an, die Sie fragt, ob Sie fortfahren möchten.
  • Weiter: Zeigt die ausführliche Meldung an und setzt dann die Ausführung fort.
  • SilentlyContinue: (Standard) Zeigt die ausführliche Meldung nicht an. Die Ausführung wird fortgesetzt.

Beispiele

In diesen Beispielen wird die Auswirkung der verschiedenen Werte von $VerbosePreference und des Verbose-Parameters veranschaulicht, um den Einstellungswert zu überschreiben.

In diesem Beispiel wird die Auswirkung des SilentlyContinue-Werts veranschaulicht, d. h. die Standardeinstellung. Der Befehl verwendet den Message-Parameter , schreibt aber 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 die Auswirkung des Continue-Werts veranschaulicht. Die $VerbosePreference Variable ist auf Weiter 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 verwendet, der $false den Continue-Wert überschreibt. Die Meldung wird nicht angezeigt.

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

In diesem Beispiel wird die Auswirkung des Stop-Werts veranschaulicht. Die $VerbosePreference Variable ist auf Stop 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 verwendet, der $false den Stop-Wert überschreibt. Die Meldung wird nicht angezeigt.

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

In diesem Beispiel wird die Auswirkung des Inquire-Werts veranschaulicht. Die $VerbosePreference Variable ist auf Inquire 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 verwendet, der $false den Inquire-Wert überschreibt. Der Benutzer wird nicht 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 nachrichten, die vom Cmdlet Write-Warning generiert werden.

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.

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

Die folgenden Werte sind gültig:

  • Beenden: Zeigt die Warnmeldung und eine Fehlermeldung an und beendet dann die Ausführung.
  • Anfragen: Zeigt die Warnmeldung an und fordert dann zur Berechtigung zum Fortfahren auf.
  • Weiter: (Standard) Zeigt die Warnmeldung an und setzt die Ausführung dann fort.
  • SilentlyContinue: Die Warnmeldung wird nicht angezeigt. Die Ausführung wird fortgesetzt.

Beispiele

In diesen Beispielen wird die Auswirkung der unterschiedlichen Werte von $WarningPreferenceveranschaulicht. Der WarningAction-Parameter überschreibt den Einstellungswert.

Dieses Beispiel zeigt die Auswirkung des Standardwerts Weiter.

$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 anzuhalten, 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 Inquire-Wert 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 WarningAction mit dem Inquire-Wert 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 dies 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 ist 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 dies unterstützt. Benutzer können den WhatIf-Parameter mit dem Wert False verwenden, um ihn manuell zu deaktivieren, z -WhatIf:$false. B. .

Beispiele

In diesen Beispielen wird die Auswirkung der unterschiedlichen Werte von $WhatIfPreferenceveranschaulicht. Sie zeigen, wie der WhatIf-Parameter verwendet wird, um den Einstellungswert für einen bestimmten Befehl zu überschreiben.

In diesem Beispiel wird die Auswirkung der Variablen veranschaulicht, die $WhatIfPreference auf den Standardwert False festgelegt ist. Verwenden Sie Get-ChildItem , 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 Auswirkungen der Verwendung des WhatIf-Parameters , wenn der Wert von $WhatIfPreferenceFalse 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 Versuches zu ermitteln, die Datei zu löschen.

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 Variablen, die $WhatIfPreference auf den Wert True festgelegt ist. Wenn Sie zum Löschen einer Datei verwenden Remove-Item , wird der Pfad der Datei angezeigt, aber 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 Remove-Item ausgeführt würde, 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".

Verwenden Sie Get-ChildItem , um zu überprüfen, 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 gezeigt, wie eine Datei gelöscht wird, wenn der Wert von $WhatIfPreferenceTrue ist. Es verwendet den WhatIf-Parameter mit dem Wert $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-ProcessWhatIf unterstützt. Der $WhatIfPreference Wert der Variablen ist 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 Stop-ProcessWhatIf-Verhalten überschreiben, indem Sie den WhatIf-Parameter mit dem Wert verwenden $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

Weitere Informationen

about_Automatic_Variables

about_CommonParameters

about_Environment_Variables

about_Profiles

about_Remote

about_Scopes

about_Variables