文档中建议了两种方法,两种方法都无法完全确定远程计算机是否可用于Powershell远程处理。
Test-Connection
是没有用的,因为它仅发送ping,但是,目标可能正在运行Intel AMT,从而响应ping,或者可能未运行winRM服务,因此此操作没有提供有用的信息。
Test-WSMan
应该测试Windows RM服务的可用性,但是只有在WinRM可以正常工作的情况下,它才可以工作,否则(计算机关闭或WinRM未运行)会给出错误消息:
Test-WSMan:客户端无法连接到请求中指定的目标。验证目标上的服务正在运行并且正在接受请求。请查阅在目标(通常是IIS或WinRM)上运行的WS-Management服务的日志和文档。如果目标是WinRM服务,请在目标上运行以下命令以分析和配置WinRM服务:“ winrm quickconfig”。第2行char:1
+ CategoryInfo : InvalidOperation: (destinationcomputer:String) [Test-WSMan], InvalidOperationException
+ FullyQualifiedErrorId : WsManError,Microsoft.WSMan.Management.TestWSManCommand
因此,我尝试将命令封装Test-WSMan
起来try-catch
,但是仍然可以给出错误信息,但实际上并没有发现:
Try {
Test-WSMan -ComputerName destinationcomputer
} catch {
write-output "not working"}
任何想法如何做到这一点?(Test-WSMan
如果我可以摆脱错误并强制其返回true或false,我会很满意)
测试$?运行test-wsman之后。
Test-WSMan destinationcomputer
if (! $?) {
'not working'
}
您也可以这样做,因为失败不会返回标准输出:
if (!(Test-WSMan destinationcomputer)){
'not working'
}
另请参阅检查命令是否已成功运行
同样在powershell 7中:
Test-WSMan destinationcomputer || 'not working'
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句