about_Eventlogs
Kurze Beschreibung
In diesem Artikel wird beschrieben, wie PowerShell Ereignisse im Windows-Ereignisprotokoll protokolliert.
Lange Beschreibung
Windows PowerShell erstellt ein Windows-Ereignisprotokoll mit dem Namen "Windows PowerShell", um Windows PowerShell-Ereignisse aufzuzeichnen. Sie können dieses Protokoll in Ereignisanzeige oder mithilfe von Cmdlets anzeigen, die Ereignisse abrufen, z. B. das Get-EventLog
Cmdlet.
Standardmäßig werden Ereignisse des Windows PowerShell-Moduls und des Anbieters im Ereignisprotokoll aufgezeichnet, Sie können jedoch die Ereignisprotokolleinstellungsvariablen verwenden, um das Ereignisprotokoll anzupassen. Sie können beispielsweise Ereignisse zu Windows PowerShell-Befehlen hinzufügen.
Das Windows PowerShell-Ereignisprotokoll zeichnet Details zu Windows PowerShell-Vorgängen auf, z. B. Starten und Beenden des Programmmoduls und Starten und Beenden der Windows PowerShell-Anbieter. Sie können auch Details zu Windows PowerShell-Befehlen protokollieren.
Anzeigen des Windows PowerShell-Ereignisprotokolls
Sie können das Windows PowerShell-Ereignisprotokoll in Ereignisanzeige oder mithilfe der Get-EventLog
Und-Cmdlets Get-WmiObject
anzeigen. Um den Inhalt des Windows PowerShell-Protokolls anzuzeigen, geben Sie Folgendes ein:
Get-EventLog -LogName "Windows PowerShell"
Um die Ereignisse und deren Eigenschaften zu untersuchen, verwenden Sie das Cmdlet, das Sort-Object
Group-Object
Cmdlet und die Cmdlets, die das Format
Verb (die Format
Cmdlets) enthalten.
Wenn Sie beispielsweise die Ereignisse im Protokoll anzeigen möchten, das nach der Ereignis-ID gruppiert ist, geben Sie Folgendes ein:
Get-EventLog "Windows PowerShell" | Format-Table -GroupBy EventID
Oder geben Sie Folgendes ein:
Get-EventLog "Windows PowerShell" |
Sort-Object EventID |
Group-Object EventID
Um alle klassischen Ereignisprotokolle anzuzeigen, geben Sie Folgendes ein:
Get-EventLog -List
Sie können das Get-WmiObject
Cmdlet auch verwenden, um das Ereignisprotokoll mithilfe der ereignisbezogenen Windows-Verwaltungsinstrumentation (Windows Management Instrumentation, WMI) zu untersuchen. Um beispielsweise alle Eigenschaften der Ereignisprotokolldatei anzuzeigen, geben Sie Folgendes ein:
Get-WmiObject Win32_NTEventlogFile |
where LogFileName -EQ "Windows PowerShell" |
Format-List -Property *
Um die win32-ereignisbezogenen WMI-Klassen zu finden, geben Sie Folgendes ein:
Get-WmiObject -List | where Name -Like "win32*event*"
Weitere Informationen finden Sie unter "Get-EventLog " und "Get-WmiObject".
Auswählen von Ereignissen für das Windows PowerShell-Ereignisprotokoll
Mithilfe der Ereignisprotokolleinstellungsvariablen können Sie ermitteln, welche Ereignisse im Windows PowerShell-Ereignisprotokoll aufgezeichnet werden.
Es gibt sechs Ereignisprotokolleinstellungsvariablen; Zwei Variablen für jede der drei Protokollierungskomponenten: das Modul (das Windows PowerShell-Programm), die Anbieter und die Befehle. Die LifeCycleEvent-Variablen protokollieren normale Start- und Stoppereignisse. Fehlerereignisse der Integritätsvariablen.
In der folgenden Tabelle sind die Ereignisprotokolleinstellungsvariablen aufgeführt.
Variable | Beschreibung |
---|---|
$LogEngineLifeCycleEvent |
Protokolliert den Start und den Stopp von PowerShell. |
$LogEngineHealthEvent |
Protokolliert PowerShell-Programmfehler |
$LogProviderLifeCycleEvent |
Protokolliert den Start und das Beenden von PowerShell-Anbietern. |
$LogProviderHealthEvent |
Protokolliert PowerShell-Anbieterfehler |
$LogCommandLifeCycleEvent |
Protokolliert das Starten und Abschließen von Befehlen. |
$LogCommandHealthEvent |
Protokolliert Befehlsfehler |
(Informationen zu Windows PowerShell-Anbietern finden Sie unter about_Providers.)
Standardmäßig sind nur die folgenden Ereignistypen aktiviert:
$LogEngineLifeCycleEvent
$LogEngineHealthEvent
$LogProviderLifeCycleEvent
$LogProviderHealthEvent
Um einen Ereignistyp zu aktivieren, legen Sie die Einstellungsvariable für diesen Ereignistyp auf $true
. Geben Sie beispielsweise Folgendes ein, um Befehlslebenszyklusereignisse zu aktivieren:
$LogCommandLifeCycleEvent
Oder geben Sie Folgendes ein:
$LogCommandLifeCycleEvent = $true
Um einen Ereignistyp zu deaktivieren, legen Sie die Einstellungsvariable für diesen Ereignistyp auf $false
. Um beispielsweise Befehlslebenszyklusereignisse zu deaktivieren, geben Sie Folgendes ein:
$LogProviderLifeCycleEvent = $false
Sie können jedes Ereignis deaktivieren, mit Ausnahme der Ereignisse, die angeben, dass das Windows PowerShell-Modul und die Kernanbieter gestartet wurden. Diese Ereignisse generieren, bevor die Windows PowerShell-Profile ausgeführt werden, und bevor das Hostprogramm bereit ist, Befehle zu akzeptieren.
Die Variableneinstellungen gelten nur für die aktuelle Windows PowerShell-Sitzung. Um sie auf alle Windows PowerShell-Sitzungen anzuwenden, fügen Sie sie ihrem Windows PowerShell-Profil hinzu.
Protokollierungsmodulereignisse
Ab Windows PowerShell 3.0 können Sie Ausführungsereignisse für die Cmdlets und Funktionen in Windows PowerShell-Modulen und -Snap-Ins aufzeichnen, indem Sie die LogPipelineExecutionDetails-Eigenschaft von Modulen und Snap-Ins auf $true
festlegen. In Windows PowerShell 2.0 ist dieses Feature nur für Snap-Ins verfügbar.
Wenn der Wert der LogPipelineExecutionDetails-Eigenschaft lautet$true
, schreibt Windows PowerShell Cmdlet- und Funktionsausführungsereignisse in der Sitzung in das Windows PowerShell-Protokoll in Ereignisanzeige. Die Einstellung ist nur in der aktuellen Sitzung wirksam.
Verwenden Sie die folgende Befehlssequenz, um die Protokollierung von Ausführungsereignissen von Cmdlets und Funktionen in einem Modul zu aktivieren.
Import-Module Microsoft.PowerShell.Archive
$m = Get-Module Microsoft.PowerShell.Archive
$m.LogPipelineExecutionDetails = $true
Verwenden Sie die folgende Befehlssequenz, um die Protokollierung von Ausführungsereignissen von Cmdlets in einem Snap-In zu aktivieren.
$m = Get-PSSnapin Microsoft.PowerShell.Core
$m.LogPipelineExecutionDetails = $True
Um die Protokollierung zu deaktivieren, verwenden Sie dieselbe Befehlssequenz, um den Eigenschaftswert auf .$false
Sie können auch die Gruppenrichtlinieneinstellung "Modulprotokollierung aktivieren" verwenden, um Modul- und Snap-In-Protokollierung zu aktivieren und zu deaktivieren. Der Richtlinienwert enthält eine Liste von Modul- und Snap-In-Namen. Platzhalter werden unterstützt.
Wenn "Modulprotokollierung aktivieren" für ein Modul festgelegt ist, befindet $true
sich der Wert der LogPipelineExecutionDetails-Eigenschaft des Moduls in allen Sitzungen und kann nicht geändert werden.
Die Gruppenrichtlinieneinstellung "Modulprotokollierung aktivieren" befindet sich in den folgenden Gruppenrichtlinienpfaden:
Computer Configuration\
Administrative Templates\
Windows Components\
Windows PowerShell
User Configuration\
Administrative Templates\
Windows Components\
Windows PowerShell
Die Benutzerkonfigurationsrichtlinie hat Vorrang vor der Computerkonfigurationsrichtlinie, und beide Richtlinien übernehmen vorrang vor dem Wert der LogPipelineExecutionDetails-Eigenschaft von Modulen und Snap-Ins.
Weitere Informationen zu dieser Gruppenrichtlinieneinstellung finden Sie unter about_Group_Policy_Settings.
Sicherheit und Überwachung
Das Windows PowerShell-Ereignisprotokoll dient zum Angeben von Aktivitäten und zur Bereitstellung von Betriebsdetails zur Problembehandlung.
Wie die meisten Windows-basierten Anwendungsereignisprotokolle ist das Windows PowerShell-Ereignisprotokoll jedoch nicht darauf ausgelegt, sicher zu sein. Es sollte nicht verwendet werden, um die Sicherheit zu überwachen oder vertrauliche oder proprietäre Informationen aufzuzeichnen.
Ereignisprotokolle sind so konzipiert, dass sie von Benutzern gelesen und verstanden werden. Benutzer können aus dem Protokoll lesen und in das Protokoll schreiben. Ein böswilliger Benutzer könnte ein Ereignisprotokoll auf einem lokalen oder Remotecomputer lesen, falsche Daten aufzeichnen und dann die Protokollierung seiner Aktivitäten verhindern.
Hinweise
Autoren von Modulautoren können ihren Modulen Protokollierungsfeatures hinzufügen. Weitere Informationen finden Sie unter Schreiben eines Windows PowerShell-Moduls.