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-ObjectGroup-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 $truefestlegen. 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_Einstellungen.

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.

Weitere Informationen