Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Kurzbeschreibung
Variablen, die das Verhalten von PowerShell anpassen.
Lange Beschreibung
PowerShell enthält eine Reihe von Variablen, mit denen Sie das Verhalten anpassen können. Diese Einstellungsvariablen funktionieren wie die Optionen in GUI-basierten Systemen.
Die Einstellungsvariablen wirken sich auf die PowerShell-Betriebssystemumgebung aus, und alle Befehle werden in der Umgebung ausgeführt. Einige Cmdlets verfügen ü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.
PowerShell enthält die folgenden Umgebungsvariablen, die Benutzereinstellungen speichern. Weitere Informationen zu diesen Umgebungsvariablen finden Sie unter about_Environment_Variables.
$Env:PSExecutionPolicyPreference$Env:PSModulePath
Anmerkung
Änderungen an Einstellungsvariablen gelten nur für den Bereich, den sie vornehmen, und alle untergeordneten Bereiche davon. Sie können beispielsweise die Auswirkungen des Änderns einer Einstellungsvariablen auf eine einzelne Funktion oder ein Skript beschränken. 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 Einstellungsvariable anzuzeigen. Der folgende Befehl zeigt beispielsweise den Wert der $ConfirmPreference Variablen an.
$ConfirmPreference
High
Verwenden Sie zum Ändern des Werts einer Variablen eine Zuordnungsanweisung. Die folgende Anweisung ändert beispielsweise den Wert des $ConfirmPreference Parameters in Medium.
$ConfirmPreference = "Medium"
Die von Ihnen festgelegten Werte sind spezifisch für die aktuelle PowerShell-Sitzung. Um Variablen in allen PowerShell-Sitzungen effektiv zu machen, fügen Sie sie ihrem PowerShell-Profil hinzu. Weitere Informationen finden Sie unter about_Profiles.
Remotearbeit
Wenn Sie Befehle auf einem Remotecomputer ausführen, unterliegen die Remotebefehle nur den Im PowerShell-Client des Remotecomputers festgelegten Einstellungen. Wenn Sie beispielsweise einen Remotebefehl ausführen, bestimmt der Wert der $DebugPreference Variablen des Remotecomputers, wie PowerShell auf das Debuggen von Nachrichten reagiert.
Weitere Informationen zu Remotebefehlen finden Sie unter about_Remote.
$ConfirmPreference
Bestimmt, ob PowerShell Sie vor dem Ausführen eines Cmdlets oder einer Funktion automatisch zur Bestätigung auffordert.
Die $ConfirmPreference Variable akzeptiert einen der ConfirmImpact Enumerationswerte: High, Medium, Lowoder None.
Cmdlets und Funktionen werden einem Risiko von hohen, mittlerenoder niedrigenzugewiesen.
Wenn der Wert der $ConfirmPreference Variable 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. Weitere Informationen zum Zuweisen eines Risikos zu Cmdlets oder Funktionen finden Sie unter about_Functions_CmdletBindingAttribute.
Wenn der Wert der $ConfirmPreference Variablen Noneist, fordert PowerShell Sie nie automatisch auf, bevor Sie ein Cmdlet oder eine Funktion ausführen.
Wenn Sie das Bestätigungsverhalten für alle Cmdlets und Funktionen in der Sitzung ändern möchten, ändern Sie $ConfirmPreference Wert der Variablen.
Um die $ConfirmPreference für einen einzelnen Befehl außer Kraft zu setzen, verwenden Sie die Bestätigen Parameters eines Cmdlets oder einer Funktion. Um eine Bestätigung anzufordern, verwenden Sie -Confirm. Verwenden Sie -Confirm:$false, um die Bestätigung zu unterdrücken.
Gültige Werte von $ConfirmPreference:
- Keine: PowerShell fordert nicht automatisch auf. Um eine Bestätigung eines bestimmten Befehls anzufordern, verwenden Sie den Confirm Parameter des Cmdlets oder der Funktion.
- low: PowerShell fordert zur Bestätigung auf, bevor Cmdlets oder Funktionen mit einem niedrigen, mittleren oder hohen Risiko ausgeführt werden.
- mittlere: PowerShell fordert zur Bestätigung auf, bevor Cmdlets oder Funktionen mit einem mittleren oder hohen Risiko ausgeführt werden.
- Hohe: PowerShell fordert zur Bestätigung auf, bevor Cmdlets oder Funktionen mit hohem Risiko ausgeführt werden.
Ausführliche Erläuterung
PowerShell kann Sie automatisch zur Bestätigung auffordern, bevor Sie eine Aktion ausführen. Wenn z. B. das Cmdlet oder die 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, das als ConfirmImpact-bezeichnet wird. Benutzer können sie nicht ändern.
Cmdlets und Funktionen, die möglicherweise ein Risiko für das System darstellen, weisen eine Bestätigen sie Parameter, den Sie verwenden können, um eine Bestätigung für einen einzelnen Befehl anzufordern oder zu unterdrücken.
Die meisten Cmdlets und Funktionen behalten den Standardwert von Medium- für ConfirmImpact-bei.
$ConfirmPreference ist standardmäßig auf "Hohe" festgelegt.
Daher ist es selten, dass Befehle automatisch zur Bestätigung aufgefordert werden, wenn Benutzer den parameter "Bestätigen" nicht angeben. Um die automatische Bestätigungsaufforderung auf weitere Cmdlets und Funktionen zu erweitern, legen Sie den Wert von $ConfirmPreference auf mittlere oder Lowfest.
Beispiele
In diesem Beispiel wird der Effekt des Standardwerts $ConfirmPreference Variablen Highdargestellt. Der wert "High" bestätigt nur Cmdlets und Funktionen mit hohem Risiko. Da die meisten Cmdlets und Funktionen mittleres Risiko darstellen, werden sie nicht automatisch bestätigt und Remove-Item die Datei löscht. Wenn Sie -Confirm zu den Eingabeaufforderungen hinzufügen, wird der Benutzer zur Bestätigung aufgefordert.
$ConfirmPreference
High
Remove-Item -Path C:\temp1.txt
Verwenden Sie -Confirm, um eine Bestätigung anzufordern.
Remove-Item -Path C:\temp2.txt -Confirm
Confirm
Are you sure you want to perform this action?
Performing operation "Remove File" on Target "C:\temp2.txt".
[Y] Yes [A] Yes to All [N] No [L] No to All
[?] Help (default is "Y"):
Das folgende Beispiel zeigt die Auswirkung der Änderung des Werts von $ConfirmPreference auf Mittlere. Da die meisten Cmdlets und Funktionen 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 in der Befehlszeile generiert werden.
Die $DebugPreference Variable akzeptiert einen der ActionPreference Enumerationswerte: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspendoder Break.
Einige Cmdlets zeigen Debugmeldungen an, die in der Regel technische Meldungen für Programmierer und technische Supportmitarbeiter sind. Das Debuggen von Nachrichten wird standardmäßig nicht angezeigt, Aber Sie können Debugmeldungen anzeigen, indem Sie den Wert von $DebugPreferenceändern.
Sie können den Debug- allgemeinen Parameter eines Cmdlets verwenden, um die Debugmeldungen für einen bestimmten Befehl anzuzeigen oder auszublenden. Weitere Informationen finden Sie unter about_CommonParameters.
Die gültigen Werte sind wie folgt:
- Break – Geben Sie den Debugger ein, wenn ein Fehler auftritt oder wenn eine Ausnahme ausgelöst wird.
- Beenden: Zeigt die Debugmeldung an und beendet die Ausführung. Schreibt einen Fehler in die Konsole.
- Inquire: Zeigt die Debugmeldung an und fragt Sie, ob Sie den Vorgang fortsetzen möchten.
- Continue: Zeigt die Debugmeldung an und setzt mit der Ausführung fort.
- SilentlyContinue: (Standard) Kein Effekt. Die Debugmeldung wird nicht angezeigt, und die Ausführung wird ohne Unterbrechung fortgesetzt.
Durch Hinzufügen des Debug- allgemeinen Parameters zu einem Befehl wird der Wert der variablen $DebugPreference in Continuegeändert, wenn der Befehl zum Generieren einer Debugmeldung konfiguriert ist.
Beispiele
Die folgenden Beispiele zeigen, wie sich die Werte von $DebugPreference ändern, wenn ein Write-Debug Befehl in der Befehlszeile eingegeben wird.
Die Änderung wirkt sich auf alle Debugnachrichten aus, einschließlich von Cmdlets und Skripts generierten Nachrichten. Die Beispiele zeigen den Debug--Parameter, der die Debugmeldungen im Zusammenhang mit einem einzelnen Befehl anzeigt oder ausblendet.
In diesem Beispiel wird der Effekt des Standardwerts der $DebugPreference Variablen SilentlyContinuedargestellt. Standardmäßig wird die Debugmeldung des Cmdlets Write-Debug nicht angezeigt, und die Verarbeitung wird fortgesetzt. Wenn der parameter Debug verwendet wird, überschreibt er die Einstellung für einen einzelnen Befehl. Die Debugmeldung wird angezeigt.
$DebugPreference
SilentlyContinue
Write-Debug -Message "Hello, World"
Write-Debug -Message "Hello, World" -Debug
DEBUG: Hello, World
In diesem Beispiel wird der Effekt $DebugPreference mit dem Wert Continue gezeigt. 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 Parameter Debug mit dem Wert $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 $DebugPreference auf den Wert Stop festgelegt. 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 Parameter Debug mit dem Wert $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 $DebugPreference auf den wert Inquire festgelegt. 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 Parameter Debug mit dem Wert $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 beendeten Fehler reagiert, ein Fehler, der die Verarbeitung des Cmdlets nicht beendet. Beispiel: an der Befehlszeile oder in einem Skript, Cmdlet oder Anbieter, z. B. die vom Cmdlet Write-Error generierten Fehler.
Die $ErrorActionPreference Variable akzeptiert einen der ActionPreference Enumerationswerte: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspendoder Break.
Sie können die ErrorAction eines Cmdlets allgemeinen Parameter verwenden, um die Einstellung für einen bestimmten Befehl außer Kraft zu setzen.
Die gültigen Werte sind wie folgt:
- Break – Geben Sie den Debugger ein, wenn ein Fehler auftritt oder wenn eine Ausnahme ausgelöst wird.
- Continue: (Standard) Zeigt die Fehlermeldung an und führt die Ausführung fort.
-
Ignorieren: Unterdrückt die Fehlermeldung und führt den Befehl weiterhin 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
$ErrorActionPreferenceVariable. - Inquire: Zeigt die Fehlermeldung an und fragt Sie, ob Sie den Vorgang fortsetzen 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 Fehlerdatenstrom.
-
Anhalten: Hält automatisch einen Workflowauftrag 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 variable
$ErrorActionPreference.
$ErrorActionPreference und der parameter ErrorAction wirken sich nicht darauf aus, wie PowerShell auf Beendigungsfehler reagiert, die die Verarbeitung von Cmdlets beenden. Weitere Informationen zum ErrorAction allgemeinen Parameter finden Sie unter about_CommonParameters.
Viele systemeigene Befehle schreiben in stderr als alternativer Datenstrom für zusätzliche Informationen. Dieses Verhalten kann zu Verwirrung führen, wenn Fehler durchgegangen werden, oder die zusätzlichen Ausgabeinformationen können für den Benutzer verloren gehen, wenn $ErrorActionPreference auf einen Zustand festgelegt ist, der die Ausgabe stummschaltet.
Ab PowerShell 7.2 werden Fehlereinträge, die von systemeigenen Befehlen umgeleitet werden, z. B. bei Verwendung von Umleitungsoperatoren (2>&1), nicht in die $Error Variable geschrieben, und die Einstellungsvariable $ErrorActionPreference wirkt sich nicht auf die umgeleitete Ausgabe aus.
PowerShell 7.3 hat ein experimentelles Feature hinzugefügt, mit dem Sie steuern können, wie Nachrichten in stderr behandelt werden.
Weitere Informationen finden Sie unter $PSNativeCommandUseErrorActionPreference.
Beispiele
In diesen Beispielen wird die Wirkung der verschiedenen Werte der variablen $ErrorActionPreference gezeigt. Der ErrorAction Parameter wird verwendet, um den $ErrorActionPreference Wert außer Kraft zu setzen.
In diesem Beispiel wird der standardwert $ErrorActionPreferenceContinuegezeigt. Es wird ein nicht beendeter Fehler generiert. Die Meldung wird angezeigt, und die Verarbeitung wird fortgesetzt.
# Change the ErrorActionPreference to 'Continue'
$ErrorActionPreference = 'Continue'
# Generate a non-terminating error and continue processing the script.
Write-Error -Message 'Test Error' ; Write-Host 'Hello World'
Write-Error: Test Error
Hello World
In diesem Beispiel wird der $ErrorActionPreference Standardwert Inquiredargestellt. 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"):
In diesem Beispiel wird die $ErrorActionPreference auf SilentlyContinuefestgelegt.
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 die $ErrorActionPreference auf Stopfestgelegt. Außerdem wird das zusätzliche Objekt angezeigt, das für die variable $Error generiert wurde.
# Change the ErrorActionPreference to 'Stop'
$ErrorActionPreference = 'Stop'
# Error message is generated and script stops processing
Write-Error -Message 'Test Error' ; Write-Host 'Hello World'
# Show the ActionPreferenceStopException and the error generated
$Error[0]
$Error[1]
Write-Error: Test Error
ErrorRecord : Test Error
WasThrownFromThrowStatement : False
TargetSite : System.Collections.ObjectModel.Collection`1[System.Management.Automation.PSObject]
Invoke(System.Collections.IEnumerable)
StackTrace : at System.Management.Automation.Runspaces.PipelineBase.Invoke(IEnumerable input)
at Microsoft.PowerShell.Executor.ExecuteCommandHelper(Pipeline tempPipeline,
Exception& exceptionThrown, ExecutionOptions options)
Message : The running command stopped because the preference variable "ErrorActionPreference" or
common parameter is set to Stop: Test Error
Data : {System.Management.Automation.Interpreter.InterpretedFrameInfo}
InnerException :
HelpLink :
Source : System.Management.Automation
HResult : -2146233087
Write-Error: Test Error
$ErrorView
Bestimmt das Anzeigeformat von Fehlermeldungen in PowerShell.
Die $ErrorView Variable verwendet einen der ErrorView Enumerationswerte: NormalView, CategoryViewoder ConciseView.
Die gültigen Werte sind wie folgt:
ConciseView-: (Standard) Stellt eine präzise Fehlermeldung und eine umgestaltete Ansicht für erweiterte Modul-Generatoren bereit. Ab PowerShell 7.2 ist der Fehler aus der Befehlszeile oder einem Skriptmodul eine fehlermeldung. Andernfalls erhalten Sie eine mehrzeilige Fehlermeldung, die den Fehler enthält, und einen Zeiger auf den Fehler, der anzeigt, wo er in dieser Zeile auftritt. Wenn das Terminal virtuelles Terminal unterstützt, werden ANSI-Farbcodes verwendet, um Farbakzent bereitzustellen. Die Akzentfarbe kann bei
$Host.PrivateData.ErrorAccentColorgeändert werden. Verwenden SieGet-ErrorCmdlet 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 am Fehler beteiligt ist.
CategoryView-: Eine prägnant strukturierte Ansicht, die für Produktionsumgebungen entwickelt wurde. Das Format lautet wie folgt:
{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 Standard ist, ConciseView-.
Get-ChildItem wird verwendet, um ein nicht vorhandenes Verzeichnis zu finden.
Get-ChildItem -Path 'C:\NoRealDirectory'
Get-ChildItem: Can't find path 'C:\NoRealDirectory' because it doesn't exist.
In diesem Beispiel wird gezeigt, wie ein Fehler angezeigt wird, wenn der Wert von $ErrorView der Standard ist, ConciseView-.
Script.ps1 wird ausgeführt und löst einen Fehler aus Get-Item Anweisung aus.
./Script.ps1
Get-Item: C:\Script.ps1
Line |
11 | Get-Item -Path .\stuff
| ^ Can't find path 'C:\demo\stuff' because it doesn't exist.
In diesem Beispiel wird gezeigt, wie ein Fehler angezeigt wird, wenn der Wert von $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 : Can't find path 'C:\nofile.txt' because it doesn't 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 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. Sie ändert nicht die Struktur des Fehlerobjekts, das in der $Error automatischen Variablen gespeichert ist. Informationen zur $Error automatischen Variablen finden Sie unter about_Automatic_Variables.
Mit dem folgenden Befehl wird das ErrorRecord-Objekt verwendet, das dem letzten Fehler im Fehlerarray zugeordnet ist, Element 0und die Eigenschaften des Objekts 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 auf die Anzeige. Wenn der Wert von $FormatEnumerationLimit kleiner als die Anzahl der aufgezählten Elemente ist, fügt PowerShell eine Auslassungspunkte (...) 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 variable $FormatEnumerationLimit 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 sind: eine für , die Dienste ausführen, und eine für beendet Dienste. Es verwendet einen Get-Service-Befehl, um alle Dienste abzurufen, und sendet dann die Ergebnisse über die Pipeline an das Cmdlet Group-Object, das die Ergebnisse nach dem Dienststatus gruppiert.
Das Ergebnis ist eine Tabelle, in der der Status in der Spalte Name und die Prozesse in der Spalte Gruppe aufgelistet werden. Wenn Sie die Spaltenbeschriftungen ändern möchten, 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 auf, die nach Statusgruppiert sind. Es gibt maximal vier Dienste, die in der Spalte Gruppe für jeden Status aufgeführt sind, da $FormatEnumerationLimit den Wert 4hat.
Get-Service | Group-Object -Property Status
Count Name Group
----- ---- -----
60 Running {AdtAgent, ALG, Ati HotKey Poller, AudioSrv...}
41 Stopped {Alerter, AppMgmt, aspnet_state, ATI Smart...}
Um die Anzahl der aufgelisteten Elemente zu erhöhen, erhöhen Sie den Wert 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 Parameter Wrap, 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 variablen $InformationPreference können Sie Die Einstellungen für den Informationsstrom 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 $InformationPreference Variable akzeptiert einen der ActionPreference Enumerationswerte: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspendoder Break.
Die gültigen Werte sind wie folgt:
- Break – Geben Sie den Debugger ein, wenn Sie in den Informationsdatenstrom schreiben.
-
Beenden: Stoppt einen Befehl oder ein Skript an einem Vorkommen des befehls
Write-Information. -
Inquire: Zeigt die Informationsmeldung an, die Sie in einem
Write-Information-Befehl angeben, und fragt dann, ob Sie den Vorgang fortsetzen möchten. - Weiter: Zeigt die Informationsmeldung an und wird fortgesetzt.
- SilentlyContinue: (Standard) Kein Effekt. Die Informationsmeldungen werden nicht angezeigt, und das Skript wird ohne Unterbrechung fortgesetzt.
$Log*Event
Die Log*-Ereignis Einstellungsvariablen bestimmen, welche Ereignistypen in das PowerShell-Ereignisprotokoll in der Ereignisanzeige geschrieben werden. Standardmäßig werden nur Modul- und Anbieterereignisse protokolliert. Sie können jedoch die Log*-Ereignis- Einstellungsvariablen verwenden, um Ihr Protokoll anzupassen, z. B. das Protokollieren von Ereignissen zu Befehlen.
Die Log*-Ereignis 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 Befehlspipelinen und Sicherheits exceptions in 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*-Ereignis-die Variable mit dem Wert $trueein, z. B.:
$LogCommandLifecycleEvent = $true
Um einen Ereignistyp zu deaktivieren, geben Sie die Variable mit dem Wert $falseein, 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 bestimmen, die aktuell im Befehlsverlauf gespeichert sind, geben Sie Folgendes ein:
(Get-History).Count
Verwenden Sie das cmdlet Get-History, um die befehle anzuzeigen, die im Sitzungsverlauf gespeichert wurden. 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: Eine beliebige Zeichenfolge.
Standard-: Leerzeichen
Standardmäßig ist die $OFS Variable nicht vorhanden, und das Ausgabedateitrennzeichen ist ein Leerzeichen, Sie können diese Variable jedoch hinzufügen und auf eine beliebige Zeichenfolge festlegen. Sie können den Wert von $OFS in Ihrer Sitzung ändern, indem Sie $OFS="<value>"eingeben.
Anmerkung
Wenn Sie den Standardwert eines Leerzeichens (" ") in Ihrer Skript-, Modul- oder Konfigurationsausgabe erwarten, achten Sie darauf, dass der $OFS Standardwert an anderer Stelle im Code nicht 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 ganzzahliger 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 $OFSbenannt werden.
$OFS = "+"
[string]$array
1+2+3+4
Um das Standardverhalten wiederherzustellen, können Sie dem Wert von " " ein Leerzeichen ($OFS) zuweisen oder die Variable 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 beim Anfügen von Daten in systemeigene Anwendungen verwendet.
Anmerkung
In den meisten Szenarien sollte der Wert für $OutputEncoding an den Wert von [Console]::InputEncodingausgerichtet werden.
Die gültigen Werte sind wie folgt: Objekte, die von einer Encoding-Klasse abgeleitet werden, z. B. ASCIIEncoding, UTF7Encoding, UTF8Encoding, UTF32Encoding-und UnicodeEncoding.
Standard-: UTF8Encoding--Objekt.
Beispiele
Der erste Befehl findet den Wert von $OutputEncoding. Da es sich bei dem Wert um ein Codierungsobjekt handelt, wird nur dessen EncodingName-eigenschaft angezeigt.
$OutputEncoding.EncodingName
Die verbleibenden Beispiele verwenden das folgende PowerShell-Skript, das als hexdump.ps1 gespeichert wurde, um das Verhalten von $OutputEncodingzu veranschaulichen.
$inputStream = [Console]::OpenStandardInput()
try {
$buffer = [byte[]]::new(1024)
$read = $inputStream.Read($buffer, 0, $buffer.Length)
Format-Hex -InputObject $buffer -Count $read
} finally {
$inputStream.Dispose()
}
Das folgende Beispiel zeigt, wie der Zeichenfolgenwert café in Byte codiert wird, wenn er in hexdump.ps1 oben erstellt wurde. Es veranschaulicht, dass der Zeichenfolgenwert mithilfe des UTF8Encoding- Schemas codiert wird.
'café' | pwsh -File ./hexdump.ps1
Label: Byte[] (System.Byte[]) <28873E25>
Offset Bytes Ascii
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
------ ----------------------------------------------- -----
0000000000000000 63 61 66 C3 A9 0D 0A caf�
Das folgende Beispiel zeigt, wie sich die Bytes ändern, wenn die Codierung in UnicodeEncoding-geändert wird.
$OutputEncoding = [System.Text.Encoding]::Unicode
'café' | pwsh -File ./hexdump.ps1
Label: Byte[] (System.Byte[]) <515A7DC3>
Offset Bytes Ascii
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
------ ----------------------------------------------- -----
0000000000000000 FF FE 63 00 61 00 66 00 E9 00 0D 00 0A 00 ÿþc a f é � �
$ProgressPreference
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 Cmdlet Write-Progress erstellt Statusanzeigen, die den Status eines Befehls anzeigen.
Die $ProgressPreference Variable akzeptiert einen der ActionPreference Enumerationswerte: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspendoder Break.
Die gültigen Werte sind wie folgt:
- Break – Geben Sie den Debugger ein, wenn Sie in den Statusdatenstrom schreiben.
- Beenden: Zeigt die Statusanzeige nicht an. Stattdessen wird eine Fehlermeldung angezeigt und die Ausführung beendet.
-
Inquire: Zeigt die Statusanzeige nicht an. Fordert zum Fortsetzen der Berechtigung auf. Wenn Sie mit
YoderAantworten, wird die Statusanzeige angezeigt. - Continue: (Standard) Zeigt die Statusanzeige an und setzt die Ausführung fort.
- SilentlyContinue: Führt den Befehl aus, zeigt jedoch nicht die Statusleiste an.
$PSDefaultParameterValues
Gibt Standardwerte für die Parameter von Cmdlets und erweiterten Funktionen an.
Der Wert von $PSDefaultParameterValues ist eine Hashtabelle, in der der Schlüssel aus dem Cmdlet-Namen und dem Parameternamen besteht, getrennt durch einen Doppelpunkt (:). Der Wert ist ein benutzerdefinierter Standardwert, den Sie angeben.
$PSDefaultParameterValues wurde in PowerShell 3.0 eingeführt.
Weitere Informationen zu dieser Einstellungsvariablen finden Sie unter about_Parameters_Default_Values.
$PSEmailServer
Gibt den Standard-E-Mail-Server an, der zum Senden von E-Mail-Nachrichten verwendet wird. Diese Einstellungsvariable wird von Cmdlets verwendet, die E-Mails senden, z. B. das Cmdlet Send-MailMessage.
$PSModuleAutoLoadingPreference
Aktiviert und deaktiviert den automatischen Import von Modulen in der Sitzung. Die $PSModuleAutoLoadingPreference Variable ist standardmäßig nicht vorhanden. Das Standardverhalten, wenn die Variable nicht definiert ist, ist identisch mit $PSModuleAutoLoadingPreference = 'All'.
Um ein Modul automatisch zu importieren, rufen Oder verwenden Sie einen Befehl, der im Modul enthalten ist.
Die $PSModuleAutoLoadingPreference Variable verwendet einen der PSModuleAutoLoadingPreference Enumerationswerte:
-
All: Module werden bei der Erstverwendung automatisch importiert. -
ModuleQualified: Module werden automatisch nur importiert, wenn ein Benutzer den modulqualifizierten Namen eines Befehls im Modul verwendet. Wenn der Benutzer beispielsweiseMyModule\MyCommandeingibt, importiert PowerShell das MyModule Modul. -
None: Deaktiviert den automatischen Import von Modulen. Verwenden Sie zum Importieren eines Moduls das cmdletImport-Module.
Weitere Informationen zum automatischen Importieren von Modulen finden Sie unter about_Modules.
$PSNativeCommandArgumentPassing
PowerShell 7.3 hat die Art und Weise geändert, wie sie die Befehlszeile für systemeigene Befehle analysiert.
Die neue $PSNativeCommandArgumentPassing Einstellungsvariable steuert dieses Verhalten.
Vorsicht
Das neue Verhalten ist eine bahnbrechende Änderung aus dem vorherigen Verhalten. Dies kann Skripts und Automatisierung unterbrechen, die bei der Aufrufen nativer Anwendungen die verschiedenen Probleme umgehen.
Mit der automatischen Variablen $PSNativeCommandArgumentPassing können Sie das Verhalten zur Laufzeit auswählen. Die gültigen Werte sind Legacy, Standardund Windows.
Legacy ist das historische Verhalten.
Die $PSNativeCommandArgumentPassing Variable ist standardmäßig definiert, der Wert ist jedoch plattformspezifisch.
- Unter Windows wird die Einstellung auf
Windowsfestgelegt. - Auf Nicht-Windows-Plattformen wird die Einstellung auf
Standardfestgelegt. - Wenn Sie die
$PSNativeCommandArgumentPassingVariable entfernt haben, verwendet PowerShell dasStandardVerhalten.
Das Verhalten von Windows und Standard Modus ist identisch, außer im Windows Modus verwendet PowerShell das Legacy Verhalten des Arguments, das übergeben wird, wenn Sie die folgenden Dateien ausführen.
cmd.execscript.exefind.exesqlcmd.exewscript.exe- Dateien enden mit:
.bat.cmd.js.vbs.wsf
Wenn die $PSNativeCommandArgumentPassing entweder auf Legacy oder Standardfestgelegt ist, sucht der Parser nicht nach diesen Dateien. Beispiele für das neue Verhalten finden Sie unter about_Parsing.
PowerShell 7.3 hat auch die Möglichkeit zum Nachverfolgen der Parameterbindung für systemeigene Befehle hinzugefügt. Weitere Informationen finden Sie unter Trace-Command.
$PSNativeCommandUseErrorActionPreference
Wenn $PSNativeCommandUseErrorActionPreference$trueist, geben systemeigene Befehle mit Nicht-Null-Beendigungscodes Fehler gemäß $ErrorActionPreferenceaus.
Einige systemeigene Befehle, z. B. Robocopy verwenden Nicht-Null-Exitcodes, um andere Informationen als Fehler darzustellen. In diesen Fällen können Sie das Verhalten vorübergehend deaktivieren und verhindern, dass Nicht-Null-Exitcodes Fehler ausgeben.
& {
# Disable $PSNativeCommandUseErrorActionPreference for this scriptblock
$PSNativeCommandUseErrorActionPreference = $false
robocopy.exe D:\reports\operational "\\reporting\ops" CY2022Q4.md
if ($LASTEXITCODE -gt 8) {
throw "robocopy failed with exit code $LASTEXITCODE"
}
}
In diesem Beispiel wird die $PSNativeCommandUseErrorActionPreference Variable in einem Scriptblock geändert. Die Änderung ist lokal für den Scriptblock. Wenn der Scriptblock beendet wird, wird die Variable auf den vorherigen Wert zurückgesetzt.
$PSSessionApplicationName
Gibt den Standardanwendungsnamen für einen Remotebefehl an, der Webdienste für die Verwaltung (WS-Management) Technologie verwendet. Weitere Informationen finden Sie unter Informationen zur Windows-Remoteverwaltung.
Der Standardanwendungsname des Systems ist WSMAN, Sie können diese Einstellungsvariable jedoch verwenden, um den Standardwert zu ändern.
Der Anwendungsname ist der letzte Knoten in einem Verbindungs-URI. Beispielsweise ist der Anwendungsname im folgenden Beispiel-URI WSMAN.
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 auszuwählen, der die Verbindungsanforderung bedient. 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 Parameter der New-PSSession, Enter-PSSessionoder Invoke-Command Cmdlets.
Die einstellungsvariable $PSSessionApplicationName 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 zum Erstellen neuer Sitzungen in der aktuellen Sitzung verwendet wird.
Diese Einstellungsvariable wird auf dem lokalen Computer festgelegt, gibt jedoch eine Sitzungskonfiguration an, die sich auf dem Remotecomputer befindet.
Der Wert der variablen $PSSessionConfigurationName ist ein vollqualifizierter Ressourcen-URI.
Der Standardwert 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 vorangestellt:
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 Parameter ConfigurationName des New-PSSession, Enter-PSSessionoder Invoke-Command Cmdlets verwenden.
Sie können den Wert dieser Variablen jederzeit ändern. Denken Sie daran, dass die ausgewählte Sitzungskonfiguration auf dem Remotecomputer vorhanden sein muss. Ist dies nicht der Fehler, 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 können.
$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. Beispielsweise wird die NoCompression Eigenschaft während der Sitzung gedreht.
Standardmäßig enthält die $PSSessionOption Variable ein PSSessionOption Objekt mit den Standardwerten für alle Optionen, wie unten dargestellt.
MaximumConnectionRedirectionCount : 5
NoCompression : False
NoMachineProfile : False
ProxyAccessType : None
ProxyAuthentication : Negotiate
ProxyCredential :
SkipCACheck : False
SkipCNCheck : False
SkipRevocationCheck : False
OperationTimeout : 00:03:00
NoEncryption : False
UseUTF16 : False
IncludePortInSPN : False
OutputBufferingMode : None
Culture :
UICulture :
MaximumReceivedDataSizePerCommand :
MaximumReceivedObjectSize : 209715200
ApplicationArguments :
OpenTimeout : 00:03:00
CancelTimeout : 00:01:00
IdleTimeout : -00:00:00.0010000
Beschreibungen dieser Optionen und weitere Informationen finden Sie unter New-PSSessionOption. Weitere Informationen zu Remotebefehlen und -sitzungen finden Sie unter about_Remote und about_PSSessions.
Verwenden Sie das Cmdlet $PSSessionOption, um den Wert der New-PSSessionOption Einstellungsvariablen zu ändern, 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 $PSSessionOption Einstellungsvariable in jeder PowerShell-Sitzung zu verwenden, fügen Sie einen New-PSSessionOption Befehl hinzu, der die $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 von Ihnen festgelegten Optionen haben Vorrang vor den Systemstandardeinstellungen und dem Wert der $PSSessionOption Einstellungsvariable.
Verwenden Sie zum Festlegen von benutzerdefinierten Sitzungsoptionen das cmdlet New-PSSessionOption, um ein PSSessionOption--Objekt zu erstellen. Verwenden Sie dann das PSSessionOption- -Objekt als Wert des SessionOption Parameter in Cmdlets, die eine Sitzung erstellen, z. B. New-PSSession, Enter-PSSessionund Invoke-Command.
$PSStyle
Ab PowerShell 7.2 können Sie jetzt auf die $PSStyle automatische Variable zugreifen, um das Rendern der ANSI-Zeichenfolgenausgabe anzuzeigen und zu ändern.
$PSStyle ist eine Instanz der PSStyle Klasse. Die Member dieser Klasse definieren Zeichenfolgen, die ANSI-Escapesequenzen enthalten, die das Rendern von Text im Terminal steuern.
Die Basismber geben Zeichenfolgen von ANSI-Escapesequenzen zurück, die ihren Namen zugeordnet sind. Die Werte sind so konfiguriert, dass anpassungsfähig ist. Die Eigenschaftennamen vereinfachen das Erstellen von verzierten Zeichenfolgen mithilfe des Tabstoppabschlusses. Zum Beispiel:
"$($PSStyle.Background.BrightCyan)Power$($PSStyle.Underline)$($PSStyle.Bold)Shell$($PSStyle.Reset)"
Die Background- und Foreground- Member verfügen außerdem über eine FromRgb() Methode, um 24-Bit-Farben anzugeben.
Weitere Informationen zu $PSStylefinden Sie unter about_ANSI_Terminals.
$Transcript
Wird von Start-Transcript verwendet, um den Namen und Speicherort der Transkriptdatei anzugeben. Wenn Sie keinen Wert für den parameter Path angeben, verwendet Start-Transcript den Pfad im Wert der globalen Variablen $Transcript. Wenn Sie diese Variable nicht erstellt haben, speichert Start-Transcript die Transkriptionen am folgenden Speicherort unter Verwendung des Standardnamens:
- Unter Windows:
$HOME\Documents - Unter Linux oder macOS:
$HOME
Der Standarddateiname lautet: PowerShell_transcript.<computername>.<random>.<timestamp>.txt.
$VerbosePreference
Bestimmt, wie PowerShell auf ausführliche Nachrichten reagiert, die von einem Skript, Cmdlet oder Anbieter generiert wurden, z. B. auf die vom Cmdlet "Write-Verbose" "Write-Verbose" generierten Nachrichten. Ausführliche Nachrichten beschreiben die Aktionen, die zum Ausführen eines Befehls ausgeführt werden.
Ausführliche Nachrichten werden standardmäßig nicht angezeigt, aber Sie können dieses Verhalten ändern, indem Sie den Wert von $VerbosePreferenceändern.
Die $VerbosePreference Variable akzeptiert einen der ActionPreference Enumerationswerte: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspendoder Break.
Die gültigen Werte sind wie folgt:
- Break – Geben Sie den Debugger ein, wenn Sie in den ausführlichen Datenstrom schreiben.
- Beenden: Zeigt die ausführliche Meldung und eine Fehlermeldung an und beendet die Ausführung.
- Inquire: Zeigt die ausführliche Meldung an und zeigt dann eine Eingabeaufforderung an, die Sie fragt, ob Sie den Vorgang fortsetzen möchten.
- Continue: Zeigt die ausführliche Meldung an und setzt dann mit der Ausführung fort.
- SilentlyContinue: (Standard) Zeigt die ausführliche Meldung nicht an. Setzt die Ausführung fort.
Sie können die Verbose allgemeinen Parameter eines Cmdlets verwenden, um ausführliche Nachrichten für einen bestimmten Befehl anzuzeigen oder auszublenden. Weitere Informationen finden Sie unter about_CommonParameters.
Beispiele
In diesen Beispielen werden die Auswirkungen der verschiedenen Werte von $VerbosePreference und der Verbose--Parameter gezeigt, 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 Parameter Message, 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 Werts Continue gezeigt. Die variable $VerbosePreference wird auf Continue festgelegt, und die Meldung wird angezeigt.
$VerbosePreference = "Continue"
Write-Verbose -Message "Verbose message test."
VERBOSE: Verbose message test.
In diesem Beispiel wird der parameter Verbose mit dem Wert $false verwendet, der den Wert Continue außer Kraft setzt. Die Nachricht wird nicht angezeigt.
Write-Verbose -Message "Verbose message test." -Verbose:$false
In diesem Beispiel wird der Effekt des werts "Stop" veranschaulicht. Die variable $VerbosePreference wird 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 parameter Verbose mit dem Wert $false verwendet, der den Wert Stop außer Kraft setzt. Die Nachricht wird nicht angezeigt.
Write-Verbose -Message "Verbose message test." -Verbose:$false
In diesem Beispiel wird der Effekt des werts Inquire dargestellt. Die variable $VerbosePreference wird auf Inquirefestgelegt. 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 parameter Verbose mit dem Wert $false verwendet, der den wert Inquire überschreibt. 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 wurden, z. B. auf die vom Cmdlet Write-Warning generierten Nachrichten.
Warnmeldungen werden standardmäßig angezeigt, und die Ausführung wird fortgesetzt, Sie können dieses Verhalten jedoch ändern, indem Sie den Wert von $WarningPreferenceändern.
Die $WarningPreference Variable akzeptiert einen der ActionPreference Enumerationswerte: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspendoder Break.
Die gültigen Werte sind wie folgt:
- Break – Geben Sie den Debugger ein, wenn eine Warnmeldung geschrieben wird.
- Beenden: Zeigt die Warnmeldung und eine Fehlermeldung an und beendet die Ausführung.
- Inquire: Zeigt die Warnmeldung an und fordert dann die Berechtigung zum Fortsetzen auf.
- Continue: (Standard) Zeigt die Warnmeldung an und setzt dann die Ausführung fort.
- SilentlyContinue: Zeigt die Warnmeldung nicht an. Setzt die Ausführung fort.
Sie können die WarningAction allgemeinen Parameter eines Cmdlets verwenden, um zu bestimmen, wie PowerShell auf Warnungen von einem bestimmten Befehl reagiert. Weitere Informationen finden Sie unter about_CommonParameters.
Beispiele
Diese Beispiele zeigen die Wirkung der verschiedenen Werte von $WarningPreference.
Der parameter WarningAction setzt den Einstellungswert außer Kraft.
In diesem Beispiel wird der Effekt des Standardwerts Continuegezeigt.
$m = "This action can delete data."
Write-Warning -Message $m
WARNING: This action can delete data.
In diesem Beispiel wird der parameter WarningAction 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 parameter WarningAction verwendet, um zu beenden, wenn eine Warnung generiert wird.
$m = "This action can delete data."
Write-Warning -Message $m -WarningAction Stop
WARNING: This action can delete data.
Write-Warning : The running command stopped because the preference variable
"WarningPreference" or common parameter is set to Stop:
This action can delete data.
At line:1 char:1
+ Write-Warning -Message $m -WarningAction Stop
In diesem Beispiel wird die $WarningPreference Variable in den Wert Inquire 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 parameter WarningAction mit dem Wert SilentlyContinueverwendet. 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 Stopgeändert.
$WarningPreference = "Stop"
$m = "This action can delete data."
Write-Warning -Message $m
WARNING: This action can delete data.
Write-Warning : The running command stopped because the preference variable
"WarningPreference" or common parameter is set to Stop:
This action can delete data.
At line:1 char:1
+ Write-Warning -Message $m
In diesem Beispiel wird die WarningAction- mit dem Wert Inquire 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 ihn unterstützt. Wenn WhatIf aktiviert ist, meldet das Cmdlet den erwarteten Effekt des Befehls, führt den Befehl jedoch nicht aus.
Die gültigen Werte sind wie folgt:
- False (0, nicht aktiviert): (Standard) WhatIf- nicht automatisch aktiviert ist. Um es manuell zu aktivieren, verwenden Sie die WhatIf-Parameter des Cmdlets.
-
True (1, aktiviert): WhatIf- wird automatisch für jeden Befehl aktiviert, der ihn unterstützt. Benutzer können den Parameter WhatIf mit dem Wert False verwenden, um ihn manuell zu deaktivieren, z. B.
-WhatIf:$false.
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 $WhatIfPreference Variablen gezeigt, die auf den Standardwert festgelegt ist, False. 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
In diesem Beispiel wird die Auswirkung der Verwendung des WhatIf-Parameters gezeigt, wenn der Wert von $WhatIfPreferenceFalseist.
Stellen Sie sicher, dass 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 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
In diesem Beispiel wird die Auswirkung der $WhatIfPreference Variablen auf den Wert Truefestgelegt. Wenn Sie Remove-Item zum Löschen einer Datei verwenden, wird der Pfad der Datei angezeigt, die Datei wird jedoch nicht gelöscht.
Versuchen Sie, eine Datei zu löschen. Eine Meldung wird angezeigt, was passiert, wenn Remove-Item ausgeführt wurde, die Datei aber nicht gelöscht wird.
$WhatIfPreference = "True"
Remove-Item -Path .\test2.txt
What if: Performing the operation "Remove File" on target "C:\Test\test2.txt".
Verwenden 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 $WhatIfPreferenceTrueist. Er 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 cmdlet Get-Process, das WhatIf und Stop-Process nicht unterstützt, das WhatIf-unterstützt. Der Wert der $WhatIfPreference Variablen ist True.
Get-Process unterstützt WhatIfnicht. 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 Verhalten Stop-ProcessWhatIf überschreiben, indem Sie den Parameter WhatIf mit dem Wert $falseverwenden. 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