我有一个用 PowerShell 编写的命令行参数脚本,它接受来自任务计划程序的服务器名称。然而,我的要求是在 SQL 服务器重新启动时执行脚本,因此我已将 PowerShell 脚本附加到事件 17069。但我无法动态传递事件源(在本例中为服务器名称)。
以下是任务调度程序作业的参数部分
-Command "& 'D:\SQLJobs\PS\readErrorLogFile.ps1' '$(Source)'"
触发 powerShell 时,$(Source) 不会从事件视图中获取事件源。您能告诉我如何获取事件源吗?
正如评论中所建议的,我已使用以下 XML 分支更新了我的任务计划程序作业
<ValueQueries>
<Value name="server">Source</Value>
</ValueQueries>
上述脚本已插入<EventTrigger>
Branch.
下面是PowerShell CMD行输入脚本。
param (
[string]$server
)
请让我知道任务调度程序作业的参数部分需要提到什么$(server)
在脚本中显示 null。
我认为您正在寻找的内容描述如下:
- https://blogs.technet.microsoft.com/wincat/2011/08/25/trigger-a-powershell-script-from-a-windows-event/ https://blogs.technet.microsoft.com/wincat/2011/08/25/trigger-a-powershell-script-from-a-windows-event/
从事件创建任务后,您需要在任务计划程序中右键单击它并执行“导出..”将其另存为 XML。然后修改 XML 以包含对要发送到脚本的值的值查询(在<EventTrigger>
部分)。
例如,要获取您添加的事件源:
<ValueQueries>
<Value name="eventSource">Event/System/Provider/@Name</Value>
</ValueQueries>
现在删除该任务并通过导入修改后的 XML 文件重新创建它。
现在,您可以配置任务的操作以运行 PowerShell.exe 和您的脚本,然后引用您用于上述值查询的任何名称作为脚本的参数输入。例如:
powershell.exe .\TriggerScript.ps1 -eventSource $(eventSource)
当然,您的脚本只需要通过以下方式支持这些输入:param()
块在顶部,例如:
param($eventSource)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)