get-service使用PowerShell不会返回

如果我把这两行代码发送给Powershell

$sName = "ALG" $service = Get-Service -computername db-name -Name $sName 

我会在那台电脑上找回有关该服务的信息。 如果我将名称更改为“db-nameXXX”(假名称),则会收到错误消息,指出找不到该服务。 但是,我有一个服务器,停止接受远程桌面会话(我也不能连接到MS SQLpipe理工作室),并发送这些命令(该机器在错误的情况下),只是挂起…脚本运行,但从来没有回报。 我想有一个“超时”的function,以便在某个时候,我可以输出一条消息,说机器没有响应。 现在,剧本不让我做任何事情。 我尝试了一个启动/进程/结束块,但只要get-service不会返回一个错误,我不能得到任何地方。

尝试这样的事情:

 $sb = [scriptblock]::create("Get-Service -computername db-name -Name $sName") $job = Start-Job -ScriptBlock $sb | Wait-Job -Timeout 10 if($job -eq $null) { #timed out } else { $service = Receive-Job $job } 

这将提交Get-Service作为工作,并等待工作完成。 通过在作业上设置超时,如果未能完成返回将为空。 如果值为null,则执行所需的任何error handling,或者接收作业并将结果放在$servicevariables中(如果已完成)。 这将返回一个Deserialized.System.ServiceProcess.ServiceController对象。 调整 – Wait-Job -Timeout ,以适应您的需求。