使用PowerShell自动化Splunk oneshot命令

时间:2012-10-29 14:22:31

标签: powershell splunk

我正在尝试编写一个PowerShell脚本,该脚本可自动执行Splunk的oneshot命令,该命令将显式重新索引受监控目录中包含的日志文件。给定一系列日期,脚本将遍历保存日志文件的目录,并对每个目标日期的文件执行oneshot一次(通常每天50到110左右)。我绝对不是你所谓的“权威大师”,这就是把我带到这里的原因。

仔细观察,Invoke-Expression seems to be每次调用时都会启动一个单独的cmd.exe实例。这会导致splunkd守护程序崩溃,或导致cmd.exe崩溃。

话虽如此,使用Invoke-Expression还有更好的选择吗?我的脚本似乎没有等待每个被调用的表达式在它触发下一个之前完成,这会对服务器造成负面影响。我已经读过这种情况,当使用Invoke-Expression调用外部非控制台应用程序时。在这种情况下,我调用splunk.exe来执行命令,这是有道理的。

我正在考虑使用脚本主机而不是使用Invoke-Expression,但首先想在StackOverflow上向专业人士询问一些潜在的替代方案:)

话虽如此,过去有没有人遇到过类似的问题,如果有的话,你选择了什么替代方案?或者,我是否可以使用其他的powershell工具来代替Invoke-Expression,这不仅可以完成工作,还可以提供更稳定的执行?任何帮助/建议都非常感谢!

2 个答案:

答案 0 :(得分:1)

尝试以下方法:

& cmd /c "full path to splunk.exe"

答案 1 :(得分:1)

您是不是尝试使用Splunk CLI从命令中执行“oneshot”,而是查看了Splunk Powershell资源工具包?

https://github.com/splunk/splunk-reskit-powershell