使用PowerShell将事件写入事件日志

7
我有一个powershell脚本,我想将其添加到事件日志中。 当我输入Write-Eventlog命令时,会收到错误消息。
Write-EventLog -Logname autosnapshot -Source 'D:\script autoSnapshots.ps1' -EventId 8000 -Entrytype Information -Message 'Creates Snapshots and deletes snapshots older than 1 day'

我认为语法是正确的,但我收到了错误信息。

Write-EventLog: The term 'Write-EventLog' is not recognized as a name of a cmdlet, function, script file, or executable program.

请检查名称的拼写,如果包含路径,请验证路径是否正确,然后重试。

有人知道我做错了什么吗?

非常感谢您的帮助。


3
您正在使用哪个版本的PowerShell?据我所知,“Write-EventLog”仅适用于Windows PowerShell(5.1版本或更早版本)。 - Mathias R. Jessen
3
Mathias对Write-EventLog的评论是正确的。我在这个页面上找到了以下内容:“由于使用了不受支持的API,*-EventLog cmdlet已经从PowerShell中删除。Get-WinEvent和New-WinEvent可用于获取和创建Windows上的事件。”页面链接为:https://learn.microsoft.com/en-us/powershell/scripting/whats-new/differences-from-windows-powershell?view=powershell-7.2&viewFallbackFrom=powershell-6 - Darin
@Darin,您应该将您的评论转换为答案,因为它是解决OP的方法。 - Jonathan E. Landrum
1
@JonathanE.Landrum,感谢您指出这一点。我早已忘记了这个问题,并且当时认为我的评论不值得成为答案。但是如果他们看到答案而不是查看评论,这可能会节省每个人的时间。另外,很抱歉我没有更早地修复它,因为一直很忙。 - Darin
2个回答

2
答案已经在问题的评论中给出,但正如Jonathan指出的那样,它应该是一个答案。特别是为了那些可能无法阅读评论的人。
Mathias的评论“Write-EventLog仅适用于Windows PowerShell(版本5.1或更旧)”是正确的。
我在这个页面上找到了这个信息:“由于使用了不受支持的API,-EventLog cmdlet已从PowerShell中删除。Get-WinEvent和New-WinEvent可用于获取和创建Windows事件”。

0
我使用了以下解决方法,通过创建一个简单的包装函数来从PowerShell版本5迁移到7:
function Write-EventLog ([parameter(position=0,Mandatory=$true)][String] $Message,[String] $LogName,[String] $Source,[String] $EntryType, [int] $EventId)
{
    eventcreate /ID $EventId /L $LogName /T $EntryType /SO $Source /D $Message
}

我从如何使用命令行创建Windows事件日志源?中得到了这个。

对于现有的源,它不起作用,并且需要管理员权限,因为它是用来创建源而不是条目。

我没有足够的声望在评论中写这个,但我希望这可以帮助那些遇到相同问题并寻找简单解决方案的人。


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