随着时间的推移,PowerShell WMI 查询失败
PowerShell WMI query failure over time
我正在如下执行 PowerShell (4.0) WMI 查询以获取 java 进程的特定进程 ID,进程变量实际上是 'java' 并且命令是已知路径的一部分命令行值的一部分(java 命令行选项)。
(Get-WmiObject win32_process -Filter "name like '%$process%' and commandLine like '%$command%' and not commandline like '%shutdown%'")
这个,给定一个唯一的命令行应该总是 return 一个单一的 process/process id 值。
PowerShell 最初是从计划任务调用的,然后进入无限循环,每 X 分钟调用一次 WMI 查询,这在我从服务器注销后持续约 1 小时,然后就停止了 return 过程。重新登录到服务器,然后我可以手动打开一个新的 PS shell 和 运行 命令 - 它有效,任务管理器中的任务 运行ning 继续显示没有值.
如果我使用 PowerShell ISE window 登录到服务器,打开并配置一个无限循环以执行相同的操作,同时保持登录状态,这不会遇到相同的情况,并且循环似乎继续没有失败- 但这里的主要区别是我无法从服务器注销,因为我打开了交互式 shell - 我认为通过测试计划任务在交互式会话处于活动状态时也不会失败。
计划任务作为本地管理员帐户调用运行最高权限并存储密码。
知道为什么 WMI 查询在一段时间后停止,以及如何纠正这个问题,因为我不能依赖于保持 RDP 会话处于活动状态?
提前致谢。
我通过简单的 'if the WMI query fails' 检查 (Get-WmiObject -Query "select * from Win32_process") 解决了这个问题。如果这是 0,则重新启动整个过程(因为这永远不应该是 0)
我正在如下执行 PowerShell (4.0) WMI 查询以获取 java 进程的特定进程 ID,进程变量实际上是 'java' 并且命令是已知路径的一部分命令行值的一部分(java 命令行选项)。
(Get-WmiObject win32_process -Filter "name like '%$process%' and commandLine like '%$command%' and not commandline like '%shutdown%'")
这个,给定一个唯一的命令行应该总是 return 一个单一的 process/process id 值。
PowerShell 最初是从计划任务调用的,然后进入无限循环,每 X 分钟调用一次 WMI 查询,这在我从服务器注销后持续约 1 小时,然后就停止了 return 过程。重新登录到服务器,然后我可以手动打开一个新的 PS shell 和 运行 命令 - 它有效,任务管理器中的任务 运行ning 继续显示没有值.
如果我使用 PowerShell ISE window 登录到服务器,打开并配置一个无限循环以执行相同的操作,同时保持登录状态,这不会遇到相同的情况,并且循环似乎继续没有失败- 但这里的主要区别是我无法从服务器注销,因为我打开了交互式 shell - 我认为通过测试计划任务在交互式会话处于活动状态时也不会失败。
计划任务作为本地管理员帐户调用运行最高权限并存储密码。
知道为什么 WMI 查询在一段时间后停止,以及如何纠正这个问题,因为我不能依赖于保持 RDP 会话处于活动状态?
提前致谢。
我通过简单的 'if the WMI query fails' 检查 (Get-WmiObject -Query "select * from Win32_process") 解决了这个问题。如果这是 0,则重新启动整个过程(因为这永远不应该是 0)