PowerShell Write-EventLog未写入所需的事件日志

3
我有以下代码片段(在PowerShell函数“Create-EventLog”中)。最终结果应该是:

  • 一个名为 Get-Drives 的新事件日志,用于记录此应用程序的所有异常消息。 Get-Drives事件日志已创建,但由于某种原因实际消息仅写入默认的Windows PowerShell事件日志中。如何让PowerShell将消息写入“Get-Drives”事件日志而不是“Windows PowerShell”事件日志?我使用PowerShell 4,并在Visual Studio 2013中使用PowerShell工具。

我的PowerShell函数片段:

if (!$EventLogExists) {
    New-EventLog -LogName "Get-Drives" -source "Get-Drives"
    Write-EventLog -LogName "Get-Drives" -source "Get-Drives" -EventId 1 -message "There was an error"
    return
} else {
    Write-EventLog -LogName "Get-Drives" -source "Get-Drives" -EventId 1 -message "There was an error"
    return
}

运行Get-EventLog -List会显示如下结果:

enter image description here

在日志中,Get-Drives的条目值为1,但它只在Windows Powershell日志中显示,该日志的值也为1。

事件查看器截图

Get-Drives 日志: enter image description here

Windows PowerShell 日志: enter image description here

2个回答

1

我也遇到了这个问题,似乎是EventViewer的问题。我通过重新启动Windows事件日志服务并重新创建EventSource来解决了这个问题。


1

让我们看看你的事件日志是否已创建,此命令将列出本地计算机上所有事件日志:

Get-EventLog -list

如果您的事件日志不在列表中,请尝试使用以下命令创建它(以管理员身份运行您的PS控制台):

New-EventLog -LogName "Get-Drives" -source "Get-Drives"

然后再次运行以查看您的事件日志是否已创建。

Get-EventLog -list

如果您的新事件日志出现在列表中,则运行您的函数以查看它是否能够写入正确的事件日志。


我已经更新了我的条目。谢谢。此外,即使交互式运行它也会产生相同的问题。事件日志被创建,但在Windows Powershell日志中而不是Get-Drives中。 - user721015
非常奇怪,它在我的Win10上完美运行。能否请您链接您的完整函数? - kekimian
请告诉我这个链接是否有效(我以前从未使用过这个网站):http://codeshare.io/Z2bmx - user721015
没问题,在我的系统上也可以运行。你的客户端的操作系统版本是什么?完全打了补丁吗? - kekimian
嗯...Windows 8.1,但是我在家里设置了一个虚拟机。既然它在你的系统上运行良好,明天我会在工作中尝试一下。谢谢你的一切。 - user721015
1
尝试为-LogName也指定一个静态名称,我不确定问题是否与您上面的打印屏幕(Get-Drives.ps1)中的扩展名为.ps1的-LogName有关。 - kekimian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接