如何检查是否存在具有特定源名称的事件日志?

Erw*_*ers 6 powershell

我们想检查是否存在具有特定源名称的日志.日志创建如下:

New-EventLog -LogName Application -Source "MyName"
Run Code Online (Sandbox Code Playgroud)

现在我们要使用PowerShell函数来检查此日志是否存在.一个有效的解决方案如下:

[System.Diagnostics.EventLog]::SourceExists("MyName") -eq $false
Run Code Online (Sandbox Code Playgroud)

如果日志存在则返回False,如果不存在则返回true.

我们如何制作这段代码,以便它使用PowerShell的内置功能而不是.NET类?我们从这里尝试了代码:

$sourceExists = !(Get-EventLog -Log Application -Source "MyName")
Run Code Online (Sandbox Code Playgroud)

但它返回一个GetEventLogNoEntriesFound例外.

有人可以帮助我们吗?谢谢.

oɔɯ*_*ɯǝɹ 4

您可以将其包装在 Cmdlet 中,如下所示:

function Test-EventLog {
    Param(
        [Parameter(Mandatory=$true)]
        [string] $LogName
    )

    [System.Diagnostics.EventLog]::SourceExists($LogName)
}
Run Code Online (Sandbox Code Playgroud)

注意:您需要从提升的 PowerShell 控制台(以管理员身份运行)运行此脚本才能正常工作:

Test-EventLog "Application"
True
Run Code Online (Sandbox Code Playgroud)