THEMA Einstellungsvariablen KURZBESCHREIBUNG Variablen zur Anpassung des Verhaltens von Windows PowerShell DETAILBESCHREIBUNG Windows PowerShell enthält einen Satz von Variablen, mit denen Sie das Verhalten anpassen können. Diese "Einstellungsvariablen" werden analog zu den Optionen in GUI-basierten Systemen verwendet. Die Einstellungsvariablen wirken sich auf die Betriebssystemumge- bung von Windows PowerShell sowie auf alle in der Umgebung ausgeführten Befehle aus. In vielen Fällen verfügen die Cmdlets über Parameter, mit denen Sie das bevorzugte Verhalten für einen bestimmten Befehl überschreiben können. In der folgenden Tabelle sind die Einstellungsvariablen und ihre Standardwerte aufgeführt. Variable Standardwert -------- ------------- $ConfirmPreference High $DebugPreference SilentlyContinue $ErrorActionPreference Continue $ErrorView NormalView $FormatEnumerationLimit 4 $LogCommandHealthEvent False (nicht protokolliert) $LogCommandLifecycleEvent False (nicht protokolliert) $LogEngineHealthEvent True (protokolliert) $LogEngineLifecycleEvent True (protokolliert) $LogProviderLifecycleEvent True (protokolliert) $LogProviderHealthEvent True (protokolliert) $MaximumAliasCount 4096 $MaximumDriveCount 4096 $MaximumErrorCount 256 $MaximumFunctionCount 4096 $MaximumHistoryCount 64 $MaximumVariableCount 4096 $OFS (Leerzeichen (" ")) $OutputEncoding ASCIIEncoding-Objekt $ProgressPreference Continue $PSEmailServer (None) $PSSessionApplicationName WSMAN $PSSessionConfigurationName https://schemas.microsoft.com/powershell/microsoft.powershell $PSSessionOption (Siehe unten) $VerbosePreference SilentlyContinue $WarningPreference Continue $WhatIfPreference 0 Windows PowerShell enthält auch folgende Umgebungsvariablen, in denen Benutzereinstellungen gespeichert werden. Weitere Informationen über die Umgebungsvariablen finden Sie unter "about_environment_variables". Variable -------- PSModulePath ARBEITEN MIT EINSTELLUNGSVARIABLEN In diesem Dokument werden die einzelnen Einstellungsvariablen beschrieben. Um den aktuellen Wert einer bestimmten Einstellungsvariable anzuzeigen, geben Sie den Namen der Variablen ein. Daraufhin wird der Wert von Windows PowerShell angezeigt. Mit dem folgenden Befehl wird beispielsweise der Wert der Variablen "$ConfirmPreference" angezeigt. PS> $ConfirmPreference High Um den Wert einer Variable zu ändern, verwenden Sie eine Zuweisungsanweisung. In der folgenden Anweisung wird beispielsweise der Variablen "$ConfirmPreference" der Wert "Medium" zugewiesen. PS> $ConfirmPreference = "Medium" Die Werte, die Sie festlegen, gelten wie alle Variablen für das aktuelle Windows PowerShell-Fenster. Fügen Sie die Werte dem Windows PowerShell-Profil hinzu, wenn diese für alle Windows PowerShell-Fenster gelten sollen. Weitere Informationen finden Sie unter "about_profiles". REMOTE ARBEITEN Wenn Sie Befehle auf einem Remotecomputer ausführen, sind die Remotebefehle nur von den Einstellungen im Windows PowerShell-Client auf dem Remotecomputer abhängig. Wenn Sie beispielsweise einen Remotebefehl ausführen, bestimmt der Wert der Variablen "$DebugPreference" auf dem Remotecomputer, wie PowerShell auf Debugmeldungen reagiert. Weitere Informationen über Remotebefehle finden Sie unter "about_remote". $ConfirmPreference ------------------ Gibt an, welche Cmdlet-Aktionen automatisch eine Bestätigung vom Benutzer anfordern, bevor sie ausgeführt werden. Wenn der Wert "$ConfirmPreference" (High, Medium, Low, None) größer oder gleich dem Risiko der Cmdlet-Aktion (High, Medium, Low, None) ist, fordert Windows PowerShell vor dem Ausführen der Aktion automatisch eine Bestätigung vom Benutzer an. Mit dem Confirm-Parameter eines Cmdlet können Sie die Einstellung für einen bestimmten Befehl überschreiben. Gültige Werte: None: Cmdlet-Aktionen werden nicht automatisch bestätigt. Benutzer müssen die Bestätigung für bestimmte Befehle mit dem Confirm-Parameter anfordern. Low: Cmdlet-Aktionen mit niedrigem, mittlerem oder hohem Risiko werden automatisch bestätigt. Mit "-Confirm:$false" können Sie die Bestätigung für einen bestimmten Befehl unterdrücken. Medium: Cmdlet-Aktionen mit mittlerem oder hohem Risiko werden automatisch bestätigt. Mit "-confirm" können Sie die Bestätigung für einen bestimmten Befehl aktivieren. Mit "confirm:$false" können Sie die Bestätigung für einen bestimmten Befehl unterdrücken. High: Cmdlet-Handlungen mit hohem Risiko werden (Standard) automatisch bestätigt. Mit "-confirm" können Sie die Bestätigung für einen bestimmten Befehl aktivieren. Mit "-confirm:$false" können Sie die Bestätigung für einen bestimmten Befehl unterdrücken. DETAILBESCHREIBUNG Wenn sich eine Cmdlet-Aktion erheblich auf das System auswirkt, beispielsweise durch das Löschen von Daten oder Nutzen einer erheblichen Menge an Systemressourcen, können Sie von Windows PowerShell vor dem Ausführen der Aktion automatisch zur Bestätigung aufgefordert werden. Beispiel: PS> remove-item pref2.txt Bestätigung Möchten Sie diese Aktion wirklich ausführen? Ausführen des Vorgangs "Datei entfernen" für das Ziel "C:\pref2.txt". [J] Ja [A] Ja, alle [N] Nein [K] Nein, keine [H] Anhalten [?] Hilfe (Der Standardwert ist "J"): Die Schätzung des Risikos ist Teil des Cmdlet "ConfirmImpact". Eine Änderung ist nicht möglich. Cmdlets, die möglicherweise ein Risiko für das System darstellen, verfügen über einen Confirm-Parameter, mit dem Sie eine Bestätigung für einen bestimmten Befehl anfordern oder unterdrücken können. Da die meisten Cmdlets den Standardrisikowert "Medium" verwenden, und der Standardwert von "$ConfirmPreference" gleich "High" ist, erfolgt nur selten eine automatische Bestätigung. Sie können die automatische Bestätigung jedoch aktivieren, indem Sie den Wert von "$ConfirmPreference" in "Medium" oder "Low" ändern. BEISPIELE In diesem Beispiel werden die Auswirkungen des Standardwerts von "$ConfirmPreference" veranschaulicht. Beim Wert "High" werden nur Cmdlet-Aktionen mit hohem Risiko bestätigt. Da die meisten Aktionen ein mittleres Risiko aufweisen, werden sie nicht automatisch bestätigt. Mit dem Confirm-Parameter des Cmdlet können Sie jedoch eine Bestätigung für einen bestimmten Befehl anfordern. PS> $confirmpreference #Aktuellen Wert der Variablen abrufen High PS> remove-item temp1.txt #Datei löschen PS> #Gelöscht ohne Bestätigung PS> remove-item temp2.txt -confirm #Confirm-Parameter verwenden Bestätigung Möchten Sie diese Aktion wirklich ausführen? Ausführen des Vorgangs "Datei entfernen" für das Ziel "C:\temp2.txt". [J] Ja [A] Ja, alle [N] Nein [K] Nein, keine [H] Anhalten [?] Hilfe (Der Standardwert ist "J"): In diesem Beispiel werden die Auswirkungen einer Änderung des Werts von "$ConfirmPrefernce" in "Medium" veranschaulicht. Da die meisten Cmdlet-Aktionen ein mittleres Risiko aufweisen, werden sie automatisch bestätigt. Mit dem Confirm-Parameter und dem Wert "$false" können Sie die Bestätigungsaufforderung für einen bestimmten Befehl unterdrücken. PS> $confirmpreference = "Medium" #Werts von "$ConfirmPreference" ändern PS> remove-item temp2.txt #Bestätigung nach Löschen einer Datei Bestätigung Möchten Sie diese Aktion wirklich ausführen? Ausführen des Vorgangs "Datei entfernen" für das Ziel "C:\temp2.txt". [J] Ja [A] Ja, alle [N] Nein [K] Nein, keine [H] Anhalten [?] Hilfe (Der Standardwert ist "J"): PS> remove-item temp3.txt -confirm:$false #Bestätigung mit dem Confirm-Parameter unterdrücken PS> $DebugPreference ------------------ Bestimmt, wie PowerShell auf Debugmeldungen reagiert, die von einem Skript, Cmdlet oder Anbieter oder durch einen Write-Debug-Befehl in der Befehlszeile generiert werden. Bei den Debugmeldungen, die von einigen Cmdlets angezeigt werden, handelt es sich um sehr technische Meldungen, die für Programmierer und Mitarbeiter des technischen Supports bestimmt sind. Standardmäßig werden Debugmeldungen nicht angezeigt. Sie können Debugmeldungen jedoch anzeigen, indem Sie den Wert von "$DebugPreference" ändern. Sie können auch den allgemeinen Debug-Parameter eines Cmdlet verwenden, um die Debugmeldungen für einen bestimmten Befehl anzuzeigen oder auszublenden. Weitere Informationen erhalten Sie mit folgendem Befehl: "get-help about_commonparameters". Gültige Werte: Stop: Zeigt die Debugmeldung an und beendet die Ausführung. Schreibt einen Fehler in die Konsole. Inquire: Zeigt die Debugmeldung an und fragt, ob Sie fortfahren möchten. Continue: Zeigt die Debugmeldung an und fährt mit der Ausführung fort. SilentlyContinue : Keine Auswirkungen. Die Debugmeldung wird nicht (Standard) angezeigt und die Ausführung ohne Unterbrechung fortgesetzt. BEISPIELE In den folgenden Beispielen werden die Auswirkungen einer Änderung der Werte von "$DebugPreference" bei Eingabe eines Write-Debug-Befehls in der Befehlszeile veranschaulicht. Die Änderung wirkt sich auf alle Debugmeldungen einschließlich der Meldungen aus, die von Cmdlets und Skripts generiert wurden. Weiterhin wird in den Beispielen die Verwendung des allgemeinen Debug-Parameters veranschaulicht, der die Debugmeldungen für einen einzelnen Befehl anzeigt oder ausblendet. In diesem Beispiel werden die Auswirkungen des Standardwerts "SilentlyContinue" veranschaulicht. Die Debugmeldung wird nicht angezeigt und die Verarbeitung fortgesetzt. Der abschließende Befehl überschreibt die Einstellung für einen einzelnen Befehl mit dem Debug-Parameter. PS> $debugpreference # Aktuellen Wert abrufen SilentlyContinue $DebugPreference PS> write-debug "Hallo, Welt" PS> # Die Debugmeldung wird nicht angezeigt. PS> write-debug "Hallo, Welt" -Debug # Debug-Parameter verwenden DEBUG: Hallo, Welt # Debugmeldung wird angefordert Bestätigung? Vorgang fortsetzen? [J] Ja [A] Ja, alle [B] Befehl anhalten [H] Anhalten [?] Hilfe (Der Standardwert ist "J"): In diesem Beispiel werden die Auswirkungen des Werts "Continue" veranschaulicht. Der abschließende Befehl verwendet den Debug-Parameter mit dem Wert "$false", um die Meldung für einen einzelnen Befehl zu unterdrücken. PS> $debugpreference = "Continue" # Wert in "Continue" ändern PS> write-debug "Hallo, Welt" DEBUG: Hallo, Welt # Die Debugmeldung wird PS> angezeigt und die Verarbeitung fortgesetzt. PS> write-debug "Hallo, Welt" -Debug:$false # Debug-Parameter mit "false" verwenden PS> # Die Debugmeldung wird nicht angezeigt. In diesem Beispiel werden die Auswirkungen des Werts "Stop" veranschaulicht. Der abschließende Befehl verwendet den Debug-Parameter mit dem Wert "$false", um die Meldung für einen einzelnen Befehl zu unterdrücken. PS> $debugpreference = "Stop" # Wert in "Stop" ändern PS> write-debug "Hallo, Welt" DEBUG: Hallo, Welt Write-Debug : Die Befehlsausführung wurde beendet, da die Shellvariable "DebugPreference" auf Stop festgelegt ist. Bei Zeile:1 Zeichen:12 + write-debug <<<< "Hallo, Welt" PS> write-debug "Hallo, Welt" -Debug:$false # Debug-Parameter mit "$false" verwenden PS> # Die Debugmeldung wird nicht angezeigt und die Verarbeitung nicht beendet. In diesem Beispiel werden die Auswirkungen des Werts "Inquire" veranschaulicht. Der abschließende Befehl verwendet den Debug-Parameter mit dem Wert "$false", um die Meldung für einen einzelnen Befehl zu unterdrücken. PS> $debugpreference = "Inquire" PS> write-debug "Hallo, Welt" DEBUG: Hallo, Welt Bestätigung Vorgang fortsetzen? [J] Ja [A] Ja, alle [B] Befehl anhalten [H] Anhalten [?] Hilfe (Der Standardwert ist "J"): PS> write-debug "Hallo, Welt" -Debug:$false # Debug-Parameter mit "$false" verwenden PS> # Die Debugmeldung wird nicht angezeigt und die Verarbeitung ohne Unterbrechung fortgesetzt. $ErrorActionPreference ---------------------- Bestimmt, wie Windows PowerShell in der Befehlszeile oder in einem Skript, Cmdlet oder Anbieter auf einen Fehler ohne Abbruch (ein Fehler, durch den die Cmdlet-Verarbeitung nicht beendet wird) reagiert, beispielsweise auf Fehler, die vom Cmdlet "Write-Error" generiert werden. Sie können auch den allgemeinen ErrorAction-Parameter eines Cmdlet verwenden, um die Einstellung für einen bestimmten Befehl zu überschreiben. Weitere Informationen erhalten Sie mit folgendem Befehl: "get-help about_commonparameters". Gültige Werte: Stop: Zeigt die Fehlermeldung an und beendet die Ausführung. Inquire: Zeigt die Fehlermeldung an und fragt, ob Sie fortfahren möchten. Continue: Zeigt die Fehlermeldung an und setzt die Ausführung fort. SilentlyContinue: Keine Auswirkungen. Die Fehlermeldung (Standard) wird nicht angezeigt und die Ausführung ohne Unterbrechung fortgesetzt. Der allgemeine $ErrorActionPreference-Parameter und der allgemeine ErrorAction-Parameter haben keine Auswirkungen auf die Reaktion von Windows PowerShell auf Fehler mit Abbruch (Fehler, durch die die Cmdlet-Verarbeitung beendet wird). Weitere Informationen über den allgemeinen ErrorAction-Parameter erhalten Sie mit folgendem Befehl: "get-help about_commonpara meters". BEISPIELE In diesen Beispielen werden die Auswirkungen verschiedener Werte von "$ErrorActionPreference" sowie die Verwendung des allgemeinen ErrorAction-Parameters zum Überschreiben der Einstellung für einen einzelnen Befehl veranschaulicht. Der ErrorAction-Parameter verfügt über die gleichen gültigen Werte wie die Variable "$ErrorActionPreference". In diesem Beispiel werden die Auswirkungen des Werts "Continue" (Standard) veranschaulicht. PS> $erroractionpreference Continue # Wert der Einstellung anzeigen PS> write-error "Hallo, Welt" # Fehler ohne Abbruch generieren write-error "Hallo, Welt" : Hallo, Welt # Die Fehlermeldung wird angezeigt und die Ausführung fortgeführt. PS> write-error "Hallo, Welt" -ErrorAction:SilentlyContinue # ErrorAction-Parameter mit dem Wert "SilentlyContinue" verwenden PS> # Die Fehlermeldung wird nicht angezeigt und die Ausführung fortgeführt. In diesem Beispiel werden die Auswirkungen des Werts "SilentlyContinue" veranschaulicht. PS> $ErrorActionPreference = "SilentlyContinue" # Wert der Einstellung ändern PS> write-error "Hallo, Welt" # Fehlermeldung generieren PS> # Fehlermeldung unterdrücken PS> write-error "Hallo, Welt" -erroraction:continue # ErrorAction-Parameter mit dem Wert "Continue" verwenden write-error "Hallo, Welt" -erroraction:continue: Hallo, Welt # Die Fehlermeldung wird angezeigt und die Ausführung fortgesetzt. In diesem Beispiel werden die Auswirkungen eines realen Fehlers veranschaulicht. In diesem Fall wird die nicht vorhandene Datei "nofile.txt" vom Befehl abgerufen. Außerdem wird im Beispiel die Einstellung mit dem allgemeinen ErrorAction-Parameter überschrieben. PS> $erroractionpreference SilentlyContinue # Wert der Einstellung anzeigen PS> get-childitem -path nofile.txt PS> # Fehlermeldung unterdrücken PS> $ErrorActionPreference = "Continue" # Wert in "Continue" ändern PS> get-childitem -path nofile.txt Get-ChildItem : Der Pfad 'C:\nofile.txt' kann nicht gefunden werden, da er nicht vorhanden ist. Bei Zeile:1 Zeichen:4 + get-childitem <<<< nofile.txt PS> get-childitem -path nofile.txt -erroraction SilentlyContinue # ErrorAction-Parameter verwenden PS> # Fehlermeldung unterdrücken PS > $ErrorActionPreference = "Inquire" # Wert in "Inquire" ändern PS> get-childitem -path nofile.txt Bestätigung Der Pfad 'C:\nofile.txt' kann nicht gefunden werden, da er nicht vorhanden ist. [J] Ja [A] Ja, alle [B] Befehl anhalten [H] Anhalten [?] Hilfe (der Standardwert ist "J"): a Get-ChildItem : Der Pfad 'C:\nofile.txt' kann nicht gefunden werden, da er nicht vorhanden ist. Bei Zeile:1 Zeichen:4 + get-childitem <<<< nofile.txt PS> $ErrorActionPreference = "Continue" # Wert in "Continue" ändern PS> Get-Childitem nofile.txt -erroraction "Inquire" # Einstellungswert mit dem ErrorAction-Parameter überschreiben Bestätigung Der Pfad 'C:\nofile.txt' kann nicht gefunden werden, da er nicht vorhanden ist. [J] Ja [A] Ja, alle [B] Befehl anhalten [H] Anhalten [?] Hilfe (Der Standardwert ist "J"): $ErrorView ---------- Bestimmt das Anzeigeformat von Fehlermeldungen in Windows PowerShell. Gültige Werte: NormalView : Eine detaillierte Ansicht (Standard) für die meisten Benutzer. Besteht aus einer Beschreibung des Fehlers, dem Namen des Objekts für den Fehler sowie Pfeilen (<<<<), die auf die Worte im Befehl zeigen, die den Fehler verursacht haben. CategoryView: Eine kompaktere strukturierte Ansicht für Produktionsumgebungen. Das Format ist:{Category}: ({TargetName}:{TargetType}):[{Activity}], {Reason} Weitere Informationen über die Felder in CategoryView finden Sie unter "ErrorCategoryInfo-Klasse" im Windows PowerShell-SDK. BEISPIELE In diesem Beispiel werden die Auswirkungen der ErrorView-Werte veranschaulicht. In diesem Beispiel wird veranschaulicht, wie ein Fehler angezeigt wird, wenn "$ErrorView" den Wert "NormalView" aufweist. In diesem Fall wird eine nicht vorhandene Datei mit dem Befehl "Get-ChildItem" gesucht. PS> $ErrorView # Wert überprüfen NormalView PS> get-childitem nofile.txt # Nicht vorhandene Datei suchen Get-ChildItem : Der Pfad 'C:\nofile.txt' kann nicht gefunden werden, da er nicht vorhanden ist. Bei Zeile:1 Zeichen:14 + get-childitem <<<< nofile.txt In diesem Beispiel wird veranschaulicht, wie der gleiche Fehler angezeigt wird, wenn "$ErrorView" den Wert "CategoryView" aufweist. PS> $ErrorView = "CategoryView" # Wert ändern in CategoryView PS> get-childitem 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 und die Struktur des Fehlerobjekts in der automatischen Variablen "$error" dadurch nicht geändert wird. Informationen über die automatische Variable "$error" finden Sie unter "about_automatic_variables". Dieser Befehl akzeptiert das ErrorRecord-Objekt, das mit dem letzten Fehler im Fehlerarray verknüpft ist (Element 0), und formatiert alle Eigenschaften des Fehlerobjekts in einer Liste. PS> $error [0] | format-list -property * -force Ausnahme : System.Management.Automation.ItemNotFoundException : Der Pfad 'C:\nofile.txt' kann nicht gefunden werden, da er nicht vorhanden ist. at System.Management.Automation.SessionStateInternal.GetChildItems(String path, Boolean recurse, CmdletProviderContext context) at System.Management.Automation.ChildItemCmdletProviderIntrinsics.Get(String path, Boolean recurse, 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 $FormatEnumerationLimit ----------------------- Bestimmt, wie viele Elemente in einer Anzeige aufgelistet werden. Diese Variable wirkt sich nicht auf die zugrunde liegenden Objekte, sondern nur auf die Anzeige aus. Wenn der Wert von $FormatEnumerationLimit kleiner als die Anzahl der aufgelisteten Elemente ist, fügt Windows PowerShell Auslassungspunkte (...) hinzu, um nicht angezeigte Elemente anzugeben. Gültige Werte: Ganze Zahlen (Int32) Standardwert: 4 BEISPIELE In diesem Beispiel wird gezeigt, wie die Variable "$FormatEnumerationLimit" verwendet wird, um die Anzeige von aufgelisteten Elementen zu verbessern. Mit dem Befehl in diesem Beispiel wird eine Tabelle generiert, in der alle Dienste, die auf dem Computer ausgeführt werden, in zwei Gruppen aufgelistet werden: eine Gruppe für Dienste, die gerade ausgeführt werden, und eine Gruppe für Dienste, die beendet wurden. Dabei werden mit einem Get-Service-Befehl alle Dienste abgerufen, und das Ergebnis wird über die Pipeline an das Cmdlet "Group-Object" übergeben, um die Ergebnisse nach dem Dienststatus zu gruppieren. Die Ergebnisanzeige enthält eine Tabelle, in der der Status in der Spalte "Name" und der Prozess mit diesem Status in der Spalte "Group" aufgeführt werden. (Die Spaltenbezeichnungen können mit einer Hashtabelle geändert werden. Weitere Informationen finden Sie in den Beispielen unter "get-help format-table -examples".) Die Spalte "Group" enthält maximal 4 Dienste für jeden Status. Um die Anzahl der aufgeführten Elemente zu erhöhen, erhöhen Sie den Wert von $FormatEnumerationLimit auf 1000. Die Liste in der Spalte "Group" in der Ergebnisanzeige wird nun durch die Zeilenlänge beschränkt. Im abschließenden Befehl des Beispiels werden mit dem Wrap-Parameter von Format-Table alle Prozesse in der jeweiligen Statusgruppe angezeigt. PS> $formatenumerationlimit # Aktuellen Wert suchen 4 PS> get-service | group-object -property status # Alle Dienste nach Status auflisten Count Name Group ----- ---- ----- 60 Running {AdtAgent, ALG, Ati Hotkeywähler, AudioSrv...} 41 Stopped {Alerter, AppMgmt, aspnet_state, ATI Smart...} # Die Liste wird nach 4 Elementen abgeschnitten. PS> $formatenumerationlimit = 1000 # Grenze auf 1000 erhöhen PS> get-service | group-object -property status # Befehl wiederholen Count Name Group ----- ---- ----- 60 Running {AdtAgent, ALG, Ati Hotkeywähler, AudioSrv, BITS, CcmExec... 41 Stopped {Alerter, AppMgmt, aspnet_state, ATI Smart, Browser, CiSvc... PS> get-service | group-object -property status | format-table -wrap # Wrap-Parameter hinzufügen 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, FastUserSwitchingCompatibi lity, HTTPFilter, ImapiService, Mapsvc, Messenger, mnmsrvc, MSDTC, MSIServer, msvsmon80, NetDDE, NetDDEdsdm, NtmsSvc, NVSvc, ose, RasAuto, RDSessMgr, RemoteAccess, RpcLocator, RSVP, SCardSvr, SwPrv, SysmonLog, TlntSvr, upnphost, UPS, VSS, WmdmPmSN, Wmi, WmiApSrv, xmlprov} $Log*Event ---------- Die Log*Event-Einstellungsvariablen bestimmen, welche Typen von Ereignissen in das Windows PowerShell-Ereignisprotokoll in der Ereignisanzeige geschrieben werden. Standardmäßig werden nur Modul- und Anbieterereignisse protokolliert. Sie können das Ereignisprotokoll jedoch mit den Log*Event- Einstellungsvariablen anpassen, um beispielsweise Befehlsereignisse zu protokollieren. Die Log*Event-Einstellungsvariablen sind folgende: $LogCommandHealthEvent: Protokolliert Fehler und Ausnahmen bei der Initialisierung und Verarbeitung von Befehlen. Standard = $false (nicht protokolliert). $LogCommandLifecycleEvent: Protokolliert das Starten und Beenden von Befehlen und Befehlspipelines sowie Sicherheitsausnahmen in der Befehlserkennung. Standard = $false (nicht protokolliert). $LogEngineHealthEvent: Protokolliert Fehler von Sitzungen. Standard = $true (protokolliert). $LogEngineLifecycleEvent: Protokolliert das Öffnen und Schließen von Sitzungen. Standard = $true (protokolliert). $LogProviderHealthEvent: Protokolliert Anbieterfehler wie Lese- und Schreibfehler, Suchfehler und Aufruffehler. Standard = $true (protokolliert). $LogProviderLifecycleEvent: Protokolliert das Hinzufügen und Entfernen von Windows PowerShell-Anbietern. Standard = $true (protokolliert). (Weitere Informationen über die Windows PowerShell-Anbieter erhalten Sie mit folgendem Befehl: "get-help about_provider". Geben Sie die Variable mit dem Wert "$true" ein, um ein Log*Event zu aktivieren, beispielsweise: $LogCommandLifecycleEvent - oder - $LogCommandLifeCycleEvent = $true Geben Sie die Variable mit dem Wert "$false" ein, um einen Ereignistyp zu deaktivieren, beispielsweise: $LogCommandLifeCycleEvent = $false Die Ereignisse, die Sie aktivieren, wirken sich nur auf die aktuelle Windows PowerShell- Konsole aus. Um die Konfiguration für alle Konsolen zu übernehmen, speichern Sie die Variableneinstellungen im Windows PowerShell-Profil. $MaximumAliasCount ------------------ Bestimmt, wie viele Aliase in einer Windows PowerShell- Sitzung zulässig sind. Der Standardwert 4096 ist für die meisten Verwendungszwecke ausreichend. Er kann jedoch an die individuellen Anforderungen angepasst werden. Gültige Werte: 1024 - 32768 (Int32) Standard: 4096 Um die Aliase im System zu zählen, geben Sie Folgendes ein: (get-alias).count $MaximumDriveCount ------------------ Bestimmt, wie viele Windows PowerShell-Laufwerke in einer angegebenen Sitzung zulässig sind. Dazu gehören Dateisystemlaufwerke und Datenspeicher, die von Windows PowerShell-Anbietern verfügbar gemacht und als Laufwerke angezeigt werden, beispielsweise das Laufwerk "Alias:" und das Laufwerk "HKLM:". Gültige Werte: 1024 - 32768 (Int32) Standard: 4096 Um die Aliase im System zu zählen, geben Sie Folgendes ein: (get-psdrive).count $MaximumErrorCount ------------------ Bestimmt, wie viele Fehler im Fehlerverlauf für die Sitzung gespeichert werden. Gültige Werte: 256 - 32768 (Int32) Standard: 256 Objekte, die die einzelnen gespeicherten Fehler darstellen, werden in der automatischen Variablen "$Error" gespeichert. Diese Variable enthält ein Array von Fehlerdatensatzobjekten mit einem Objekt pro Fehler. Der aktuellste Fehler stellt das erste Objekt im Array ($Error [0]) dar. Um die Fehler im System zu zählen, verwenden Sie die Count-Eigenschaft des $Error-Arrays. Geben Sie Folgendes ein: $Error.count Mit der Arraynotation können Sie bestimmte Fehler anzeigen. Geben Sie beispielsweise Folgendes ein, um den aktuellsten Fehler anzuzeigen: $Error[0] Um den ältesten gespeicherten Fehler anzuzeigen, geben Sie Folgendes ein: $Error[($Error.Count -1] Um die Eigenschaften des ErrorRecord-Objekts anzuzeigen, geben Sie Folgendes ein: $Error[0] | format-list -property * -force In diesem Befehl überschreibt der Force-Parameter die spezielle Formatierung von ErrorRecord-Objekten und stellt das konventionelle Format wieder her. Um alle Fehler aus dem Fehlerverlauf zu löschen, verwenden Sie die Clear-Methode des Fehlerarrays. PS> $Error.count 17 PS> $Error.clear() PS> PS> $Error.count 0 Um alle Eigenschaften und Methoden eines Fehlerarrays zu suchen, verwenden Sie das Get-Member-Cmdlet mit dem InputObject-Parameter. Wenn Sie eine Auflistung von Objekten über die Pipeline an Get-Member übergeben, zeigt Get-Member die Eigenschaften und Methoden der Objekte in der Auflistung an. Wenn Sie die InputObject-Parameter von Get-Member verwenden, zeigt Get-Member die Eigenschaften und Methoden der Auflistung an. $MaximumFunctionCount ------------------ Bestimmt, wie viele Funktionen in einer angegebenen Sitzung zulässig sind. Gültige Werte: 1024 - 32768 (Int32) Standard: 4096 Um die Funktionen in der Sitzung anzuzeigen, verwenden Sie das Windows PowerShell-Laufwerk "Function:", das vom Windows PowerShell-Funktionsanbieter verfügbar gemacht wird. (Geben Sie "get-help function" ein, um weitere Informationen über den Funktionsanbieter zu erhalten.) Um die Funktionen in der aktuellen Sitzung aufzulisten, geben Sie Folgendes ein: get-childitem function: Um die Anzahl der Funktionen in der aktuellen Sitzung zu bestimmen, geben Sie Folgendes ein: (get-childitem function:).count $MaximumHistoryCount ------------------ Bestimmt, wie viele Befehle im Befehlsverlauf für die aktuelle Sitzung gespeichert werden. Gültige Werte: 1 - 32768 (Int32) Standard: 64 Um die Anzahl der Befehle zu bestimmen, die derzeit im Befehlsverlauf gespeichert sind, geben Sie Folgendes ein: (get-history).count Mit dem Cmdlet "Get-History" können Sie den Befehl anzeigen, der im Befehlsverlauf gespeichert wurde. Weitere Informationen erhalten Sie mit folgendem Befehl: "get-help about_history". $MaximumVariableCount ------------------ Bestimmt, wie viele Variablen - einschließlich automatischer Variablen, Einstellungsvariablen sowie in Befehlen und Skripts erstellter Variablen - in einer angegebenen Sitzung zulässig sind. Gültige Werte: 1024 - 32768 (Int32) Standard: 4096 Um die Variablen in der Sitzung anzuzeigen, verwenden Sie das Cmdlet "Get-Variable" sowie die Features des Windows PowerShell-Laufwerks "Variable:" und des Windows PowerShell-Variablenanbieters. Informationen über den Variablenanbieter erhalten Sie mit folgendem Befehl: "get-help variable". Um die aktuelle Anzahl von Variablen im System zu suchen, geben Sie Folgendes ein: (get-variable).count $OFS ---- Ausgabetrennzeichen. Gibt das Zeichen an, das die Elemente eines Arrays trennt, wenn das Array in eine Zeichenfolge konvertiert wird. Gültige Werte: eine beliebige Zeichenfolge. Standard: Leerzeichen Standardmäßig ist die Variable "$OFS" nicht vorhanden, und das Ausgabetrennzeichen ist ein Leerzeichen. Sie können diese Variable jedoch hinzufügen und auf eine beliebige Zeichenfolge festlegen. BEISPIELE In diesem Beispiel wird gezeigt, wie ein Leerzeichen zur Trennung der Werte verwendet wird, wenn ein Array in eine Zeichenfolge konvertiert wird. In diesem Fall wird ein Array von ganzen Zahlen in einer Variablen gespeichert, und die Variable wird in eine Zeichenfolge umgewandelt. PS> $array = 1,2,3 # Array von ganzen Zahlen speichern PS> [string]$array # Array in eine Zeichenfolge umwandeln 1 2 3 # Elemente durch Leerzeichen trennen Um das Trennzeichen zu ändern, fügen Sie die Variable "$OFS" hinzu, indem Sie ihr einen Wert zuweisen. Um ordnungsgemäß zu funktionieren, muss die Variable den Namen "$OFS" tragen. PS> $OFS = "+" # "$OFS" erstellen und "+" zuweisen PS> [string]$array # Befehl wiederholen 1+2+3 # Elemente durch Pluszeichen trennen Um das Standardverhalten wiederherzustellen, können Sie dem Wert von "$OFS" ein Leerzeichen (" ") zuweisen oder die Variable löschen. Mit diesem Befehl wird die Variable gelöscht, und es wird überprüft, ob das Trennzeichen ein Leerzeichen ist. PS> Remove-Variable OFS # "$OFS" löschen PS> PS> [string]$array # Befehl wiederholen 1 2 3 # Elemente durch Leerzeichen trennen $OutputEncoding --------------- Bestimmt den Typ der Zeichencodierung, die von Windows PowerShell beim Senden von Text an andere Anwendungen verwendet wird. Wenn eine Anwendung beispielsweise Unicode-Zeichenfolgen an Windows PowerShell zurückgibt, muss der Wert möglicherweise geändert werden, um die Zeichen ordnungsgemäß zu senden. Gültige Werte: Objekte, die von einer Encoding-Klasse abgeleitet wurden, beispielsweise ASCIIEncoding, SBCSCodePageEncoding, UTF7Encoding, UTF8Encoding, UTF32Encoding und UnicodeEncoding. Standard: ASCIIEncoding-Objekt (System.Text.ASCIIEncoding) BEISPIELE In diesem Beispiel wird veranschaulicht, wie der Befehl FINDSTR in Windows PowerShell auf einem Computer verwendet wird, der für eine Sprache mit Unicode-Zeichen wie Chinesisch lokalisiert wurde. Mit dem ersten Befehl wird der Wert von "$OutputEncoding" gesucht. Da der Wert ein Codierungsobjekt darstellt, sollte nur die EncodingName-Eigenschaft angezeigt werden. PS> $OutputEncoding.EncodingName # Aktuellen Wert suchen US-ASCII In diesem Beispiel werden mit einem FINDSTR-Befehl zwei chinesischen Zeichen in der Datei "Test.txt" gesucht. Wenn der FINDSTR-Befehl in der Windows-Eingabeaufforderung (Cmd.exe) ausgeführt wird, sucht FINDSTR die Zeichen in der Textdatei. Wenn Sie den gleichen FINDSTR-Befehl jedoch in Windows PowerShell ausführen, werden die Zeichen nicht gefunden, da sie von Windows PowerShell in ASCII-Text statt in Unicode-Text an FINDSTR gesendet werden. PS> findstr <Unicode-Zeichen> # findstr für die Suche verwenden PS> # Nichts gefunden Legen Sie den Wert von "$OutputEncoding" auf den Wert der OutputEncoding-Eigenschaft der Konsole fest, die auf dem für Windows ausgewählten Gebietsschema basiert, um den Befehl in Windows PowerShell zu verwenden. Verwenden Sie doppelte Doppelpunkte (::) im Befehl, da OutputEncoding eine statische Eigenschaft der Konsole ist. PS> $OutputEncoding = [console]::outputencoding PS> # Gleichen Wert festlegen wie OutputEncoding-Eigenschaft der Konsole PS> $OutputEncoding.EncodingName OEM United States # Ergebniswert suchen Nach dieser Änderung werden die Zeichen vom Befehl FINDSTR gefunden. PS> findstr <Unicode-Zeichen> test.txt: <Unicode-Zeichen> # findstr für die Suche verwenden Sucht die Zeichen in der Textdatei. $ProgressPreference ------------------- Bestimmt, wie PowerShell auf Statusaktualisierungen reagiert, die von einem Skript, Cmdlet oder Anbieter generiert werden, beispielsweise die Statusleisten, die vom Cmdlet "Write-Progress" generiert werden. Mit dem Cmdlet "Write-Progress" werden Statusleisten erstellt, die den Status eines Befehls darstellen. Gültige Werte: Stop: Zeigt keine Statusleiste an. Stattdessen wird eine Fehlermeldung angezeigt, und die Ausführung wird beendet. Inquire: Zeigt keine Statusleiste an. Fordert eine Berechtigung an, um fortzufahren. Wenn Sie mit J oder A antworten, wird die Statusleiste angezeigt. Continue: Zeigt die Statusleiste an und fährt (Standard) mit der Ausführung fort. SilentlyContinue: Führt den Befehl aus, zeigt jedoch keine Statusleiste an. $PSEmailServer -------------- Gibt den Standard-E-Mail-Server an, der zum Senden von E-Mails verwendet wird. Diese Einstellungsvariable wird beispielsweise von Cmdlets wie "Send-MailMessage" verwendet, die E-Mails senden. $PSSessionApplicationName --------------------------- Gibt den Standardanwendungsnamen für einen Remotebefehl mit WS-Management-Technologie an. Der Standardanwendungsname des Systems ist WSMAN. Sie können die Standardeinstellung jedoch mit der Einstellungsvariablen ändern. Der Anwendungsname ist der letzte Knoten in einem Verbindungs-URI. So lautet der Anwendungsname im folgenden Beispiel-URI WSMAN. http://Server01:8080/WSMAN Der Standardanwendungsname wird verwendet, wenn der Remotebefehl keinen Verbindungs-URI oder Anwendungsnamen angibt. Der WinRM-Dienst wählt mit dem Anwendungsnamen einen Listener für die Verbindungsanforderung aus. Der Wert dieses Parameters sollte mit dem Wert der URLPrefix-Eigenschaft eines Listeners auf dem Remotecomputer übereinstimmen. Um den Systemstandard und den Wert dieser Variablen zu überschreiben und einen anderen Anwendungsnamen für eine bestimmte Sitzung auszuwählen, verwenden Sie den ConnectionURI-Parameter oder den ApplicationName-Parameter der Cmdlets "New-PSSession", "Enter-PSSession" oder "Invoke-Command". Diese Einstellungsvariable wird auf dem lokalen Computer festgelegt, gibt jedoch einen Listener auf dem Remotecomputer an. Wenn der angegebene Anwendungsname auf dem Remotecomputer nicht vorhanden ist, führt der Befehl zum Einrichten der Sitzung zu einem Fehler. $PSSessionConfigurationName --------------------------- Gibt die Standardsitzung an, die für PSSessions verwendet wird, die in der aktuellen Sitzung erstellt wurden. Diese Einstellungsvariable wird auf dem lokalen Computer festgelegt, gibt jedoch eine Sitzungskonfiguration auf dem Remotecomputer an. 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 den Konfigurationsnamen angeben, wird der folgende Schema-URI vorangestellt: https://schemas.microsoft.com/powershell/ Sie können die Standardeinstellung überschreiben und mit dem ConfigurationName-Parameter des Cmdlet "New-PSSession", "Enter-PSSession" oder "Invoke-Command" eine andere Sitzungskonfiguration für eine bestimmte Sitzung auswählen. Sie können den Wert dieser Variablen jederzeit ändern. Bedenken Sie dabei, dass die ausgewählte Sitzungskonfiguration auf dem Remotecomputer vorhanden sein muss. Andernfalls führt der Befehl zum Erstellen einer Sitzung für die Sitzungskonfigu- ration zu einem Fehler. Diese Einstellungsvariable hat keine Auswirkungen auf die lokalen Sitzungskonfigurationen, die verwendet werden, wenn Remotebenutzer eine Sitzung erstellen, die eine Verbindung mit diesem Computer herstellt. Sie können mit den Berechtigungen für die lokalen Sitzungskonfigurationen jedoch bestimmen, von welchen Benutzern diese verwendet werden dürfen. $PSSessionOption ---------------- Legt die Standardwerte für fortgeschrittene Benutzeroptionen in einer Remotesitzung fest. Durch Konfiguration dieser Optionen werden die Standardwerte des Systems für Sitzungsoptionen überschrieben. Sie können auch benutzerdefinierte Optionen für eine bestimmte Remotesitzung festlegen, indem Sie den SessionOption-Parameter in Cmdlets konfigurieren, mit denen eine Sitzung erstellt wird, beispielsweise "New-PSSession", "Enter-PSSession" und "Invoke-Command". Der SessionOption-Para- meterwert hat Vorrang gegenüber den Standardeinstellungen im System und in der Variablen. Die Variable "$PSSessionOption" enthält ein PSSessionOption-Objekt (System.Management.Automation.Remoting.PSSessionObject). Jede Eigenschaft des Objekts stellt eine Sitzungsoption dar. Beispielsweise deaktiviert die NoCompression-Eigenschaft die Datenkomprimierung während der Sitzung. Um die Einstellungsvariable "$PSSessionOption" zu erstellen, verwenden Sie das Cmdlet "New-PSSessionOption". Speichern Sie die Ausgabe in der Variablen "$PSSessionOption". Beispiel: $PSSessionOption = New-PSSessionOption -NoCompression Um die Einstellungsvariable "$PSSessionOption" in allen Windows PowerShell-Sitzungen zu verwenden, fügen Sie dem Windows PowerShell-Profil einen New-PSSessionOption-Befehl hinzu, mit dem die Variable "$PSSessionOption" erstellt wird. Weitere Informationen über das Cmdlet "New-PSSessionOption" finden Sie im Hilfethema für New-PSSessionOption. Weitere Informationen über Remotebefehle und Sitzungen finden Sie unter "about_Remote" und unter "about_PSSessions". Weitere Informationen zur Verwendung von Profilen finden Sie unter "about_Profiles". $VerbosePreference ------------------ Bestimmt, wie PowerShell auf ausführliche Meldungen reagiert, die von einem Skript, Cmdlet oder Anbieter generiert wurden, beispielsweise Meldungen, die vom Cmdlet "Write-Verbose" generiert werden. In der Regel werden in ausführlichen Meldungen die Aktionen zur Ausführung eines Befehls beschrieben. Standardmäßig werden ausführliche Meldungen nicht angezeigt. Sie können dieses Verhalten jedoch ändern, indem Sie den Wert von "$VerbosePreference" ändern. Sie können auch den allgemeinen Verbose-Parameter eines Cmdlet verwenden, um die ausführlichen Meldungen für einen bestimmten Befehl anzuzeigen oder auszublenden. Weitere Informationen erhalten Sie mit folgendem Befehl: "get-help about_commonparameters". Gültige Werte: Stop: Zeigt die ausführliche Meldung sowie eine Fehlermeldung an und beendet die Ausführung. Inquire: Zeigt die ausführliche Meldung und anschließend eine Eingabeaufforderung an, in der Sie gefragt werden, ob Sie fortfahren möchten. Continue: Zeigt die ausführliche Meldung an und setzt die Ausführung fort. SilentlyContinue: Zeigt keine ausführliche (Standard) Meldung an. Setzt die Ausführung fort. BEISPIELE Diese Beispiele veranschaulichen die Auswirkungen der verschiedenen Werte von "$VerbosePreference" sowie der Verwendung des allgemeinen Verbose-Parameters zum Überschreiben des Einstellungswerts. In diesem Beispiel werden die Auswirkungen des Werts "SilentlyContinue" (Standard) veranschaulicht. PS> $VerbosePreference # Aktuellen Wert suchen SilentlyContinue PS> Write-Verbose "Ausführlicher Meldungstest" PS> # Ausführliche Meldung schreiben # Meldung wird nicht angezeigt PS> Write-Verbose "Ausführlicher Meldungstest" -verbose VERBOSE: Ausführlicher Meldungstest # Verbose-Parameter verwenden In diesem Beispiel werden die Auswirkungen des Werts "Continue" veranschaulicht. PS> $VerbosePreference = "Continue" # Wert in "Continue" ändern PS> Write-Verbose "Ausführlicher Meldungstest" # Ausführliche Meldung schreiben VERBOSE: Ausführlicher Meldungstest # Meldung wird angezeigt PS> Write-Verbose "Ausführlicher Meldungstest" -verbose:$false # Verbose-Parameter mit dem Wert "$false" verwenden PS> # Meldung wird nicht angezeigt In diesem Beispiel werden die Auswirkungen des Werts "Stop" veranschaulicht. PS> $VerbosePreference = "Stop" # Wert in "Stop" ändern PS> Write-Verbose "Ausführlicher Meldungstest" # Ausführliche Meldung schreiben VERBOSE: Ausführlicher Meldungstest Write-Verbose: Die Befehlsausführung wurde beendet, da die Shellvariable "VerbosePreference" auf Stop festgelegt ist. Bei Zeile:1 Zeichen:14 + Write-Verbose <<<< "Ausführlicher Meldungstest" PS> Write-Verbose "Ausführlicher Meldungstest" -verbose:$false # Verbose-Parameter mit dem Wert "$false" verwenden PS> # Meldung wird nicht angezeigt In diesem Beispiel werden die Auswirkungen des Werts "Inquire" veranschaulicht. PS> $VerbosePreference = "Inquire" # Wert in "Inquire" ändern PS> Write-Verbose "Ausführlicher Meldungstest" VERBOSE: Ausführlicher Meldungstest # Ausführliche Meldung schreiben Bestätigung Vorgang fortsetzen? [J] Ja [A] Ja, alle [B] Befehl anhalten [H] Anhalten [?] Hilfe (der Standardwert ist "J"): a PS> PS> Write-Verbose "Ausführlicher Meldungstest" -verbose:$false # Verbose-Parameter verwenden PS> # Meldung wird nicht angezeigt $WarningPreference ------------------ Bestimmt, wie PowerShell auf Warnmeldungen reagiert, die von einem Skript, Cmdlet oder Anbieter generiert wurden, beispielsweise Meldungen, 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 auch den allgemeinen WarningAction-Parameter eines Cmdlet verwenden, um zu bestimmen, wie Windows PowerShell auf Warnungen eines bestimmten Befehls reagiert. Weitere Informationen erhalten Sie mit folgendem Befehl: "get-help about_commonparameters". Gültige Werte: Stop: Zeigt die Warnmeldung sowie eine Fehlermeldung an und beendet die Ausführung. Inquire: Zeigt die Warnmeldung an und fordert dann eine Berechtigung zum Fortfahren an. Continue: Zeigt die Warnmeldung an und setzt (Standard) die Ausführung fort. SilentlyContinue: Zeigt keine Warnmeldung an. Setzt die Ausführung fort. BEISPIELE Diese Beispiele veranschaulichen die Auswirkungen der verschiedenen Werte von "$WarningPreference" sowie der Verwendung des allgemeinen WarningAction-Parameters zum Überschreiben des Einstellungswerts. In diesem Beispiel werden die Auswirkungen des Werts "Continue" (Standard) veranschaulicht. PS> $WarningPreference # Aktuellen Wert suchen Continue # Warnmeldung schreiben PS> Write-Warning "Dieser Vorgang kann zum Löschen von Daten führen." WARNING: Dieser Vorgang kann zum Löschen von Daten führen. # WarningAction-Parameter für " Write-Warning" verwenden. "Dieser Vorgang kann zum Löschen von Daten führen". PS> Write-Warning "Dieser Vorgang kann zum Löschen von Daten führen." -warningaction silentlycontinue In diesem Beispiel werden die Auswirkungen des Werts "SilentlyContinue" veranschaulicht. PS> $WarningPreference = "SilentlyContinue" # Wert in SilentlyContinue ändern PS> Write-Warning "Dieser Vorgang kann zum Löschen von Daten führen." PS> # Warnmeldung schreiben PS> Write-Warning "Dieser Vorgang kann zum Löschen von Daten führen." -warningaction stop # WarningAction-Parameter zum Beenden # der Verarbeitung, wenn der Befehl die WARNUNG: "Dieser Vorgang kann zum Löschen von Daten führen" generiert. Write-Warning: Die Befehlsausführung wurde beendet, da die Shellvariable "WarningPreference" auf Stop festgelegt ist. Bei Zeile:1 Zeichen:14 + Write-Warning <<<< "Dieser Vorgang kann zum Löschen von Daten führen." -warningaction stop In diesem Beispiel werden die Auswirkungen des Werts "Inquire" veranschaulicht. PS> $WarningPreference = "Inquire" # Wert in "Inquire" ändern PS> Write-Warning "Dieser Vorgang kann zum Löschen von Daten führen." # Warnmeldung schreiben WARNING: Dieser Vorgang kann zum Löschen von Daten führen. Bestätigung Vorgang fortsetzen? [J] Ja [A] Ja, alle [B] Befehl anhalten [H] Anhalten [?] Hilfe (der Standardwert ist "J"): a PS> PS> Write-Warning "Dieser Vorgang kann zum Löschen von Daten führen." -warningaction silentlycontinue PS> # WarningAction-Parameter zum Ändern der # Antwort auf eine Warnung für den aktuellen Befehl verwenden In diesem Beispiel werden die Auswirkungen des Werts "Stop" veranschaulicht. PS> $WarningPreference = "Stop" # Wert in "Stop" ändern PS> Write-Warning "Dieser Vorgang kann zum Löschen von Daten führen." # Warnmeldung schreiben WARNING: Dieser Vorgang kann zum Löschen von Daten führen. Write-Warning: Die Befehlsausführung wurde beendet, da die Shellvariable "WarningPreference" auf Stop festgelegt ist. Bei Zeile:1 Zeichen:14 + Write-Warning <<<< "Dieser Vorgang kann zum Löschen von Daten führen." PS> Write-Warning "Dieser Vorgang kann zum Löschen von Daten führen." -warningaction inquire WARNING: Dieser Vorgang kann zum Löschen von Daten führen. Bestätigung Vorgang fortsetzen? [J] Ja [A] Ja, alle [B] Befehl anhalten [H] Anhalten [?] Hilfe (Der Standardwert ist "J"): # WarningAction-Parameter zum Ändern der #Antwort auf eine # Warnung für den aktuellen Befehl verwenden $WhatIfPreference ------------------ Bestimmt, ob WhatIf automatisch für jeden Befehl aktiviert wird, der den Parameter unterstützt. Wenn WhatIf aktiviert wird, meldet das Cmdlet die erwarteten Auswirkungen des Befehls, führt den Befehl jedoch nicht aus. Gültige Werte: 0: WhatIf wird nicht automatisch (Standard) aktiviert. Verwenden Sie den WhatIf-Parameter des Befehls zur manuellen Aktivierung. 1: WhatIf wird automatisch für alle Befehle aktiviert, die den Parameter unterstützen. Der WhatIf-Befehl kann mit dem Wert "False" verwendet werden, um den Befehl manuell zu deaktivieren (WhatIf:$false). DETAILBESCHREIBUNG Wenn WhatIf von einem Cmdlet unterstützt wird, meldet das Cmdlet die erwarteten Auswirkungen des Befehls, statt den Befehl auszuführen. So meldet Windows PowerShell als Antwort auf einen Remove-Item-Befehl, welche Elemente gelöscht würden, anstatt die Datei "test.txt" zu löschen. Durch einen nachfolgenden Get-Childitem-Befehl wird bestätigt, dass die Datei nicht gelöscht wurde. PS> remove-item test.txt WhatIf: Der Vorgang "Remove-Item" wird für das Ziel "Item: C:\test.txt" ausgeführt. PS> get-childitem test.txt Verzeichnis: Microsoft.PowerShell.Core\FileSystem::C: Modus LastWriteTime Length Name ---- ------------- ------ ---- -a--- 29.07.2006 19:15 84 test.txt BEISPIELE In diesen Beispielen werden die Auswirkungen der verschiedenen Werte von "$WhatIfPreference" veranschaulicht. Außerdem wird gezeigt, wie mit dem Cmdlet "WhatIf" der Einstellungswert für einen bestimmten Befehl überschrieben wird. In diesem Beispiel werden die Auswirkungen des Standardwerts 0 (nicht aktiviert) veranschaulicht. PS> $whatifpreference 0 # Aktuellen Wert überprüfen PS> get-childitem test.txt | format-list FullName FullName : C:\test.txt # Vorhandensein der Datei überprüfen PS> remove-item test.txt PS> # Datei löschen PS> get-childitem test.txt | format-list -property FullName # Löschen der Datei überprüfen Get-ChildItem : Der Pfad 'C:\test.txt' kann nicht gefunden werden, da er nicht vorhanden ist. Bei Zeile:1 Zeichen:14 + get-childitem <<<< test.txt | format-list fullname In diesem Beispiel werden die Auswirkungen des WhatIf-Parameters mit dem Wert 0 für "$WhatIfPreference" veranschaulicht. PS> get-childitem test2.txt | format-list -property FullName FullName : C:\test2.txt # Vorhandensein der Datei überprüfen PS> remove-item test2.txt -whatif WhatIf: Der Vorgang "Remove File" wird für das Ziel "C:\test2.txt" ausgeführt. # WhatIf-Parameter verwenden PS> get-childitem test2.txt | format-list -property FullName FullName : C:\test2.txt # Sicherstellen, dass die Datei nicht gelöscht wurde In diesem Beispiel werden die Auswirkungen des Werts 1 (WhatIf aktiviert) veranschaulicht. Wenn Sie ein Cmdlet mit Remove-Item löschen, wird von Remove-Item der Pfad für die zu löschende Datei angezeigt, die Datei wird jedoch nicht gelöscht. PS> $whatifpreference = 1 PS> $whatifpreference 1 # Wert ändern PS> remove-item test.txt WhatIf: Der Vorgang "Remove File" wird für das Ziel "C:\test.txt" ausgeführt. # Versuchen, eine Datei zu löschen PS> get-childitem test.txt | format-list FullName FullName : C:\test.txt # Vorhandensein der Datei überprüfen In diesem Beispiel wird gezeigt, wie eine Datei gelöscht wird, wenn der Wert von "$WhatIfPreference" 1 ist. Dabei wird der WhatIf-Parameter mit dem Wert "$false" verwendet. PS> remove-item test.txt -whatif:$false # WhatIf-Parameter mit "$false" verwenden In diesem Beispiel wird veranschaulicht, dass einige Cmdlets das Verhalten von WhatIf unterstützen und andere nicht. In diesem Beispiel weist "$WhatIfPreference" den Wert 1 (aktiviert) auf, und ein Get-Process-Befehl, der WhatIf nicht unterstützt, wird ausgeführt; das Verhalten von WhatIf wird jedoch von einem Stop-Process-Befehl ausgeführt. Sie können das WhatIf-Verhalten des Stop-Process-Befehls mit dem WhatIf-Parameter und dem Wert "$false" überschreiben. PS> $whatifpreference = 1 # Wert in 1 ändern PS> get-process winword # Ein Get-Process-Befehl wird abgeschlossen. Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName ------- ------ ----- ----- ----- ------ -- ----------- 234 8 6324 15060 154 0.36 2312 WINWORD PS> stop-process -name winword WhatIf: Der Vorgang "Stop-Process" wird für das Ziel "WINWORD (2312)" ausgeführt. # Stop-Process-Befehl verwendet WhatIf PS> stop-process -name winword -whatif:$false PS> # WhatIf:$false überschreibt die Einstellung PS> get-process winword Get-Process: Der Prozess "winword" kann nicht gefunden werden. Überprüfen Sie den Prozessnamen, und rufen Sie das Cmdlet erneut auf. Bei Zeile:1 Zeichen:12 + get-process <<<< winword # Beenden des Prozesses überprüfen SIEHE AUCH about_Automatic_Variables about_CommonParameters about_Environment_Variables about_Profiles about_Remote about_Scopes about_Variables