Advanced Windows PowerShell Scripting Video Training

Advanced Windows PowerShell Scripting Video Training
Advanced Windows PowerShell Scripting Video Training

Wednesday, March 20, 2013

Writing Event Log Entries with PowerShell

PowerShell contains a cmdlet, Write-EventLog that will allow you to place custom events generated by your scripts into the clients event logs.  One problem that I have had with this approach is that the source that is generating the event log entry needs to be registered with the log you are writing to.  In other words, an extra procedure on each client/server that needs to be completed before the script can be used.  Another option is to use the Windows PowerShell event log itself.  Take a look at this code:

Write-EventLog -Source PowerShell -LogName "Windows PowerShell" -EventId 10000 -EntryType Information -Message "This is a test"


Here you can see that we are using the Source of PowerShell with the event log of Windows PowerShell.  The key to using the Windows PowerShell event log for your own purposes is to make sure that you are using event IDs that are unique. Using this code, I was able to get an idea for the Event IDs being used by the Windows PowerShell event log.


Get-WinEvent -LogName "Windows PowerShell" |

 Select-Object -Property ID -Unique

It appeared that anything over 10000 was available.  When developing code that you want to make entries in the Windows PowerShell event log, make an Excel spread sheet of your scripts and the event ID numbers it will use.  Allow for some room for growth so separate blocks by sizes of 25 or 50.  That way as you add new code to the script in the future, your event IDs for that script will be sequential.  Having this list will also help you understand which IDs that you need to look up.  When you need to recover all the events from a particular script, you simply provide the Event ID range for that script.

$LogHash = @{LogName = "Windows PowerShell"; ID = 10000..10024}

Get-WinEvent -FilterHashtable $LogHash

A parameter that may help you clarify what you are writing in the event log is –EntryType.  EntryType has the following values:

  • Error
  • Warning
  • Information
  • SuccessAudit
  • FailureAudit

Using this parameter will help you to further filter your search results. It will also allow you to reuse event IDs because they will have different EventTypes.

For those of you who wish to create a custom event log for your scripts, take a look at the help file for New-EventLog.

No comments: