如果未启用服务器远程处理,则退出PS1脚本(Test-WsMan [计算机IP])

时间:2017-03-29 18:25:34

标签: powershell powershell-remoting

来自客户端的此cmdlet允许我检查是否在服务器上启用了使用Powershell进行远程处理。在下面的示例中,结果表明它是:

PS C:\WINDOWS\system32> Test-WsMan xxx.104.50.xxx  

wsmid           : http://schemas.dmtf.org/wbem/wsman/identity/1/wsmanidentity.xsd
ProtocolVersion : http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd
ProductVendor   : Microsoft Corporation
ProductVersion  : OS: 0.0.0 SP: 0.0 Stack: 3.0

但是,我不知道如何通过运行Test-WsMan获得真/假。 在我的自动化脚本中,我想检查是否启用了远程处理,如果没有,则停止脚本并退出。

我希望我的问题有道理,我希望有人比我更聪明。

1 个答案:

答案 0 :(得分:2)

来自MSDN

  

如果测试的计算机正在运行该服务,则cmdlet将显示WS-Management标识架构,协议版本,产品供应商以及测试服务的产品版本。

MSDN没有明确说明它在没有运行服务时的作用,但我相信你可以把它视为一个真正的虚假。如果没有返回任何内容则无效。 PowerShell非常擅长将表达式评估为布尔值。

if(test-wsman $computer -ErrorAction SilentlyContinue){
    # Remoting is enabled
} else {
    # Something is wrong. 
}

-ErrorAction SilentlyContinue将涵盖任何失败的原因,例如名称错误或无法联系。如果远程处理“无法正常工作”,您可以自行决定如何处理。