【问题标题】:GWMI Query hangs PowerShell ScriptGWMI 查询挂起 PowerShell 脚本
【发布时间】:2014-08-09 06:31:29
【问题描述】:

我有一些不稳定的服务器,导致我的 PowerShell 脚本挂起。有谁知道我可以在某种超时或等效类型中编写脚本的方法吗?

在脚本和 PowerShell 控制台中导致我出现问题的查询是: gwmi win32_computersystem -计算机名 $server |选择处理器数量、域、制造商、型号、总物理内存

查询只是挂起。这绝对是服务器上的一个问题,但是当脚本在 X 时间内没有得到响应时,我需要让脚本继续运行。

任何建议将不胜感激。

【问题讨论】:

  • 我经常发现,使用 PowerShell 挂起永不超时的 WMI 查询通常可以通过 .NET 应用程序正常工作。事实上,在我现在的环境中,大约 10% 的服务器会在查询 Win32_Group 或 Win32_Services 时导致我的 PowerShell 脚本挂起,但 C# 应用程序没有任何问题。

标签: powershell


【解决方案1】:

您可以将查询作为作业启动,然后使用Wait-Job 等待作业完成或达到超时。超时值以秒为单位。一个例子:

 $job = gwmi win32_computersystem -ComputerName $server -AsJob | Wait-Job -Timeout 30
 if ($job.State -ne 'Completed') {
     Write-Host "'$server' timed out after 30 seconds."
     return
 }
 $results = $job | Receive-Job | select numberofprocessors,domain,manufacturer,model,totalphysicalmemory

【讨论】:

    猜你喜欢
    • 2011-05-07
    • 1970-01-01
    • 2013-02-03
    • 1970-01-01
    • 2015-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-05
    相关资源
    最近更新 更多