带超时的执行语句?

Wil*_*nis 6 powershell

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

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

Kei*_*ill 3

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

$job = Invoke-Command -cn $computers { Invoke-WmiMethod ... } -AsJob
Wait-Job $job -Timeout 60
Run Code Online (Sandbox Code Playgroud)

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