Tutorial voor het gebruik van gebeurtenissen in PowerShell: van logboeken tot geavanceerde automatisering

Laatste update: 05/06/2025
Auteur: Isaac
  • PowerShell Hiermee kunt u verschillende soorten gebeurtenissen verwerken: engine, .NET, WMI en meer.
  • Met cmdlets zoals Register-ObjectEvent en Get-Event kunt u in realtime met gebeurtenissen werken.
  • Taken kunnen worden geautomatiseerd door gebeurtenissen zoals procesafsluitingen, bestandswijzigingen of systeemlogboeken te detecteren.
  • Met PowerShell kunt u gebeurtenissen uit de standaard- en aangepaste logboeken lezen, filteren en exporteren. Windows.

gebeurtenissen vensters gebeurtenissen

Wilt u leren hoe u gebeurtenissen in PowerShell efficiënt kunt beheren en de mogelijkheden ervan kunt benutten om taken te automatiseren of systeemactiviteit te detecteren? Hoewel PowerShell bekendstaat als een systeembeheertool, komt de ware kracht ervan pas tot uiting in combinatie met gebeurtenissen. In dit artikel leggen we ALLES uit wat u moet weten over het gebruik van gebeurtenissen met PowerShell, gebaseerd op officiële documentatie en gespecialiseerde technische artikelen.

Met PowerShell kunt u elk type gebeurtenis vastleggen, analyseren en erop reageren, van systeemlogboeken tot aangepaste gebeurtenissen.We zullen beide zien commando's We behandelen zowel basis- als geavanceerde voorbeelden met behulp van .NET Framework-klassen. We leren je ook hoe je gebeurtenissen kunt bekijken, je erop kunt abonneren en geautomatiseerde acties kunt activeren op basis van de vastgelegde gebeurtenis. Laten we beginnen.

Soorten gebeurtenissen die u in PowerShell kunt verwerken

PowerShell kan met verschillende soorten gebeurtenissen werken, elk met zijn eigen kenmerken. Hier zijn de belangrijkste:

  • PowerShell Engine-gebeurtenissen: zoals OnIdle (wanneer er geen activiteit is) en Exiting (wanneer de sessie wordt gesloten).
  • Gebeurtenissen van .NET Framework-objecten: zoals het sluiten van processen, het wijzigen van bestanden, etc.
  • WMI- en CIM-gebeurtenissen: Ideaal voor geavanceerdere bewakingsscenario's, beschikbaar sinds PowerShell 3.0.
  • Aangepaste gebeurtenissen: gemaakt met New-Event om specifieke contexten binnen uw scripts te verwerken.

Bekijk en werk met logboeken met PowerShell

Een van de meestgebruikte manieren om met gebeurtenissen in PowerShell te werken, is door de gebeurtenislogboeken van Windows te raadplegen.U kunt ze openen via de grafische gebeurtenisviewer (uitvoeren eventvwr), maar PowerShell geeft je veel meer controle met cmdlets Get-EventLog y Get-WinEventAls u ook wilt leren hoe u specifieke systeemproblemen kunt detecteren, kunt u het volgende bekijken: Deze gebeurtenisviewer-diagnose in Windows 11.

  Hoe u de fout 'Mobiele informatiegemeenschap mogelijk niet activeren' op de iPhone kunt repareren

Basisquery's met Get-EventLog

Deze cmdlet is handig voor het werken met logs klassiekers zoals Aanvraag, Systeem o Security. Een paar voorbeelden:

  • Toon alle logs: Get-EventLog -List
  • Bekijk de laatste 10 evenementen: Get-EventLog -LogName System -Newest 10
  • Filter op type: Get-EventLog -LogName System -EntryType Error
  • Filter op bericht: Get-EventLog -LogName System -Message *dominio*

Geavanceerdere query's met Get-WinEvent

Voor moderne of aangepaste logs, Get-WinEvent Het is krachtiger. Het accepteert XML-gebaseerde filters, stelt u in staat om te werken met specifieke ID's zoals 4104 (gebruikt voor geregistreerde PowerShell-scripts) en toegang te krijgen tot records zoals Microsoft-Windows-PowerShell/Operational.evtxAls u meer wilt weten over het beheren van logboeken en gebeurtenissen in Hyper-V, bekijk dan Logboeken en gebeurtenissen beheren in Hyper-V.

Om bijvoorbeeld alle fragmenten uit een script uitgevoerd (gebeurtenis 4104 met dezelfde ScriptBlock-ID):

$StoreArrayHere = Get-WinEvent -FilterHashtable @{ Path="C:\SampleEVTX\Microsoft-Windows-PowerShell%4Operational.evtx"; ProviderName="Microsoft-Windows-PowerShell"; Id = 4104 } | Where-Object { $_.Message -like '*51baf005*' }

U kunt de fragmenten sorteren en samenvoegen om het volledige script te reconstrueren.Een belangrijke praktijk in forensische analyse of taken van cybersecurityVoor meer informatie over hoe u dit kunt detecteren malware via logs, query soorten malware.

Aangepaste evenementen maken en erop abonneren

Met PowerShell kunt u aangepaste gebeurtenissen maken met New-EventDit is handig voor het genereren van interne gebeurtenissen binnen complexe scripts. U kunt zich hierop abonneren via Register-EngineEvent.

voorbeeld:

Register-EngineEvent -SourceIdentifier MyEvent -Action { Write-Host "Se ha producido el evento personalizado" }
New-Event -SourceIdentifier MyEvent -MessageData "Algo pasó"

U kunt ook gebeurtenissen in de actieve wachtrij bekijken met Get-Event en elimineer ze met Remove-EventVoor geavanceerder beheer, bekijk De firewall in Windows overschrijven.

Abonneer u op .NET Framework-evenementen

met Register-ObjectEvent U kunt reageren op gebeurtenissen van .NET-objectenU kunt bijvoorbeeld detecteren wanneer een applicatie wordt gesloten, een bestand wordt aangemaakt of een nieuw logboek in het systeem wordt ingevoerd.

Voorbeeld met het rekenmachineproces

$calc = ::Start("calc.exe")
Register-ObjectEvent -InputObject $calc -EventName Exited -Action {
    Write-Host "La calculadora se cerró"
}

Voorbeeld met FileSystemWatcher

$fsw = New-Object System.IO.FileSystemWatcher
$fsw.Path = "C:\Users\Public"
Register-ObjectEvent -InputObject $fsw -EventName Created -Action { Write-Host "Archivo nuevo detectado" }

Voorbeeld met System.Diagnostics.EventLog

$log = New-Object System.Diagnostics.EventLog
$log.Log = "Security"
Register-ObjectEvent -InputObject $log -EventName EntryWritten -Action { Write-Host "Evento de seguridad escrito" }

In deze gevallen wordt het actieblok automatisch uitgevoerd telkens wanneer de gecontroleerde gebeurtenis plaatsvindt..

  Fix “Een andere computer gebruikt de printer”-fout in Windows 10

PowerShell Engine-gebeurtenissen

PowerShell-gebeurtenissen

Er zijn er maar een paar, maar ze zijn wel handig voor het automatiseren van veelvoorkomende taken:

  • PowerShell.OnIdle: Deze wordt geactiveerd wanneer er geen activiteit is.
  • PowerShell.Afsluiten: Het wordt gestart wanneer de console wordt gesloten.

Om bijvoorbeeld de opdrachtgeschiedenis op te slaan:

Register-EngineEvent -SourceIdentifier PowerShell.Exiting -SupportEvent -Action {
    Get-History | Export-Clixml "$home\ps_history.xml"
}

U kunt dit script opnemen in uw PowerShell-profiel. Wanneer u een nieuwe sessie start, kunt u de geschiedenis ophalen met:

If (Test-Path "$home\ps_history.xml") {
    Add-History -InputObject (Import-Clixml "$home\ps_history.xml")
}

Abonnementen bekijken en beheren

Alle actieve gebeurtenissen en abonnementen in een sessie kunnen worden bekeken met: Get-EventSubscriberOm ze te annuleren, gebruikt u gewoon: Unregister-Event.

Bijvoorbeeld:

Get-EventSubscriber | Unregister-Event

U kunt ook de parameter gebruiken -Force als een abonnement niet direct zichtbaar is.

Automatisering met achtergrond- of externe gebeurtenissen

PowerShell ondersteunt het doorsturen van gebeurtenissen vanuit achtergrond- of externe sessiesDit bereikt u door de parameter -Forward in de abonnement-cmdlets.

Voorbeeld met een achtergrondtaak:

Start-Job -ScriptBlock {
    Register-EngineEvent -SourceIdentifier JobEvent -Forward
    New-Event -SourceIdentifier JobEvent -Message "Trabajo terminado"
}

Met uw hoofdsessie kunt u die gebeurtenis vastleggen en er actie op ondernemen..

Toepassingen in cyberbeveiliging en forensisch onderzoek

PowerShell 5.0 introduceert scriptblokregistratie (gebeurtenis-ID 4104), die de volledige inhoud van uitgevoerde scripts opslaat. Dit is cruciaal voor het detecteren van verdachte activiteiten.

Als een script lang is, wordt het in de logs als meerdere fragmenten opgeslagen. Je kunt het reconstrueren door te filteren op ScriptBlock-ID en de gebeurtenissen te sorteren. Er is ook het script ExtractAllScripts.ps1 die deze taak automatiseert. Hiermee is het mogelijk om fragmenten te combineren die logrotatie overleven en een groot deel van de uitgevoerde content te herstellen.

Hoewel PowerShell in het verleden bekritiseerd is vanwege de mogelijkheid tot kwaadaardig gebruik, wordt het, wanneer correct geconfigureerd, een essentieel hulpmiddel voor verdediging tegen aanvallen, het controleren van wijzigingen en het automatisch reageren op afwijkend gedrag. Om te begrijpen hoe u verdachte activiteiten kunt detecteren, raadpleegt u DHCP en DNS configureren op Windows Server.

Door gebeurtenissen in PowerShell te beheersen, kunt u veiligere, efficiëntere en geautomatiseerde omgevingen creëren. Van het monitoren van processen tot het afhandelen van netwerk- of bestandsgebeurtenissen, de flexibiliteit van PowerShell is enorm. De sleutel is te begrijpen hoe u zich kunt abonneren op relevante gebeurtenissen en hoe u die informatie kunt gebruiken om actie te ondernemen, waardoor uw reactievermogen en beveiliging worden versterkt.

Windows-gebeurtenisviewer Eventvwr
Gerelateerd artikel:
Geavanceerde diagnostiek met Logboeken in Windows 11: een complete handleiding