带超时的执行语句?

时间:2011-03-24 03:41:19

标签: powershell

在脚本中使用Invoke-WmiMethod遇到问题,该脚本在某些计算机上运行时会挂起。我想要做的是执行命令,如果它在一段确定的时间内没有返回(例如60到120秒),那么继续(将救助记录到文件中。)我目前唯一知道的方法尝试这样做是使用-AsJob参数;但是,当我尝试这样做时,生成的作业会立即失败(即使对于Invoke-WmiMethod语句没有添加-AsJob参数的计算机也是如此。)其他与WMI相关的cmdlet可以对这些问题机器起作用,所以我认为这不是auth或DCOM问题。

无论如何,还有其他方法可以在脚本中设置一个我可以尝试的语句超时吗?

1 个答案:

答案 0 :(得分:3)

嗯,不确定为什么Invoke-WmiMethod会失败,但也许Invoke-Command会起作用(值得我快速尝试),例如:

$job = Invoke-Command -cn $computers { Invoke-WmiMethod ... } -AsJob
Wait-Job $job -Timeout 60

这假设您已在所有远程计算机上启用了远程处理,并且它们正在运行PowerShell 2.0。如果在Vista / Windows 7上或在XP上作为管理员,请确保从提升的提示运行此命令。