Come scrivere registri nel Visualizzatore eventi di Windows da PowerShell/CMD

In alternativa all'utilizzo di file di registro di testo negli script, è possibile scrivere le informazioni sugli eventi direttamente nei registri del Visualizzatore eventi. In questo articolo esamineremo come scrivere i registri nel Visualizzatore eventi di Windows da uno script di PowerShell o dal prompt dei comandi.

Per scrivere informazioni nei registri eventi di Windows, utilizzare il fileScrivi-EventLogcmdlet. Ad esempio, per scrivere un evento informativo nel registro dell'applicazione:

Write-EventLog -LogName Application -Source "Application" -EntryType Information -EventID 1 -Message "PS1 Script started"

Puoi aggiungere un'origine evento separata a un registro esistente:

New-EventLog -LogName Application -Source "MyScripts"

Ora puoi scrivere eventi con un'origine personalizzata:

Write-EventLog -LogName Application -Source "MyScripts" -EntryType Warning –EventID 1 –Message "PS1 Script started"

Aprire la console del Visualizzatore eventi (eventvwr.msc), espandere ilApplicazionelog e controlla che un nuovo evento con la tua descrizione sia stato aggiunto al log.

È possibile utilizzare i seguenti tipi di eventi inTipo di voceparametro:Error,Information,FailureAudit,SuccessAudit, OWarning.

Per aggiungere un evento al registro da uno script BAT/CMD, utilizzare il comando eventcreate.exe:

eventcreate /t information /l application /id 1 /d "BAT script started"

Saperne di più:Come cancellare tutti i registri eventi nel Visualizzatore eventi

È possibile creare un registro eventi classico personalizzato nel Visualizzatore eventi utilizzando il fileNuovo registro eventicomando.

New-EventLog -LogName CustomPSLog -source 'MyScripts','PSScript','PSLogonScript','PSSchedScript'

Se stai scrivendo eventi in un log personalizzato, dovresti prima controllare lo script per vedere se il log esiste già.
If ([System.Diagnostics.EventLog]::SourceExists('CustomPSLog') -eq $False) {
New-EventLog -LogName CustomPSLog -Source ...
}

Affinché un nuovo registro eventi classico venga visualizzato nella console grafica del Visualizzatore eventi, è necessario inviargli almeno un evento.

Write-EventLog -LogName CustomPSLog -Source MyScripts -EntryType Information -EventID 1 -Message "Test"

Verrà visualizzato un nuovo registro nella radice del fileRegistri di applicazioni e servizisezione. Verrà creato un nuovo file EVTX per il file di registro nel file%SystemRoot%System32WinevtLogscartella.

Scopri come configurare la dimensione massima del registro eventi e altre opzioni su Windows.

Utilizza il cmdlet Get-WinEvent per trovare e filtrare gli eventi nei registri del Visualizzatore eventi:

Get-WinEvent -FilterHashtable @{logname="CustomPSLog";id=1}|ft TimeCreated,Id,Message | Select-Object -First 5

Nelle versioni più recenti di PowerShell Core, il cmdlet Write-EventLog non è supportato. Se provi a eseguire un comando che lo contiene, riceverai un errore:

Write-EventLog: The term 'Write-EventLog' is not recognized as a name of a cmdlet, function, script file, or executable program.

In PowerShell Core 7.x, dovresti usareNew-WinEventInvece. Tuttavia, per utilizzarlo, è necessario registrare un fornitore di eventi separato, il che può essere complicato. Negli script PowerShell Core è molto più semplice importare innanzitutto il modulo Microsoft.PowerShell.Management utilizzando il metodo-UseWindowsPowerShellopzione. Quindi, puoi utilizzare il cmdlet Write-EventLog negli script PowerShell Core:

Import-Module Microsoft.PowerShell.Management -UseWindowsPowerShell
Write-EventLog -LogName CustomPSLog1 -Source CustomPSLog -EntryType Information -EventID 1 -Message "Test2"

Per utilizzare il cmdlet Write-EventLog per aggiungere registri al Visualizzatore eventi, utilizzare l'account membro del gruppo Administrators locale. Un utente non amministratore può inviare eventi solo ai registri del Visualizzatore eventi personalizzati creati da un amministratore.

Related Posts