PowerShell 5.1:多计算机多服务名调用Get-Service报错问题咨询
解决PowerShell 5.1中Get-Service多机多服务查询失败的问题
当你同时指定多台计算机和多个服务名调用Get-Service时,只要某台计算机上缺少任意一个指定服务,整个命令就会终止,哪怕其他计算机存在该服务、或者该计算机存在其他指定服务。-ErrorAction Continue在这里无法生效,因为此类属于终止错误,会直接中断命令执行流程。
解决方案1:逐台计算机单独查询
遍历每台计算机,对单台计算机单独调用Get-Service,这样某台机器的服务查询错误不会影响其他机器的执行:
foreach ($computer in $computers) { Get-Service -ComputerName $computer -Name $serviceNames -ErrorAction SilentlyContinue }
-ErrorAction SilentlyContinue会忽略当前机器上不存在的服务错误,同时返回该机器上存在的指定服务。
解决方案2:逐个服务精细检查
如果需要记录哪些服务在哪些机器上不存在,可以嵌套遍历计算机和服务名,结合try/catch捕获错误并给出提示:
foreach ($computer in $computers) { foreach ($service in $serviceNames) { try { Get-Service -ComputerName $computer -Name $service -ErrorAction Stop } catch { Write-Warning "计算机 $computer 上不存在服务 $service" } } }
这个方式会逐个验证每个服务在每台机器上的存在性,存在的服务正常返回,不存在的会输出警告信息,全程不会中断流程。
内容的提问来源于stack exchange,提问作者Rod
相关产品推荐
相关产品推荐

