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

Posted

技术标签:

【中文标题】PowerShell Write-EventLog 未写入所需的事件日志【英文标题】:PowerShell Write-EventLog Not Writing to Desired Event Log 【发布时间】:2015-10-25 15:00:06 【问题描述】:

我在 PowerShell 函数(名为 Create-EventLog)中有以下代码 (sn-p)。最终结果应该如下:

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

我的 PowerShell 函数 sn-p:

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 显示以下输出:

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

事件查看器的屏幕截图

获取驱动器日志:

Windows Powershell 日志:

【问题讨论】:

【参考方案1】:

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

获取事件日志列表

如果您的 EventLog 不在列表中,请尝试仅使用此命令而不是您的函数来创建它(以管理员身份运行您的 PS 控制台):

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

然后再次运行以查看您的 EventLog 是否已创建。

获取事件日志列表

如果您的新 EventLog 出现在列表中,则运行您的函数以查看他现在是否能够写入正确的 EventLog

【讨论】:

我已经更新了我的条目。谢谢。此外,即使以交互方式运行它也会产生相同的问题。仅在 Windows Powershell 日志而不是 Get-Drives 中创建事件日志。 很奇怪,在我的win10上完美运行。你能链接你完整的功能吗? 让我知道这个链接是否有效(以前从未使用过这个网站):codeshare.io/Z2bmx 没问题,也可以在我的系统上运行。您的客户端的操作系统版本是多少?完全修补? 尝试为 -LogName 指定一个静态名称,我不确定,但问题可能与 -LogName 的扩展名有关,即上面打印屏幕中的 .ps1(Get-Drives .ps1).

以上是关于PowerShell Write-EventLog 未写入所需的事件日志的主要内容,如果未能解决你的问题,请参考以下文章

powershell怎么运行

powershell PowerShell:启动PowerShell作为其他用户提升

powershell [提示输入powershell] #powershell #input #prompt

powershell 测量PowerShell命令或PowerShell脚本的速度

powershell远程下载exe并执行

powershell 使用啥端口