Search code examples
powershellevent-logeventlog-source

How to determine if an EventLog already exists


I'm using the following line to create a new event log

new-eventlog -LogName "Visual Studio Builds" -Source "Visual Studio"

I want to run this every time, because if I run a build from a new computer, I'd still like to see the event logs.

The problem is that every time the script is run after the log is already created, it throws an error.

New-EventLog : The "Visual Studio" source is already registered on the "localhost" computer.
At E:\Projects\MyApp\bootstrap.ps1:14 char:13
+ new-eventlog <<<<  -LogName "Visual Studio Builds" -Source "Visual Studio"
    + CategoryInfo          : InvalidOperation: (:) [New-EventLog], InvalidOperationException
    + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.NewEventLogCommand

Now I know that I can "search" for the event log

Get-EventLog -list | Where-Object {$_.logdisplayname -eq "Visual Studio Builds"} 

But now how do I determine if it exists?


Solution

  • So I was on the right path with Get-EventLog.

    Instead of just reading it, I stored it in a variable. Then I checked if the variable was null.

    This has achieved what I was looking to do.

    $logFileExists = Get-EventLog -list | Where-Object {$_.logdisplayname -eq "Visual Studio Builds"} 
    if (! $logFileExists) {
        New-EventLog -LogName "Visual Studio Builds" -Source "Visual Studio"
    }