我正在尝试查看一个进程是否在多个服务器上运行,然后将其格式化为一个表格。
get-process -ComputerName server1,server2,server3 -name explorer | Select-Object processname,machinename
这就是最简单的部分 – 当进程不存在或服务器不可用时,powershell会输出一个很大的丑陋的错误,混淆了表并且不会继续。 例
Get-Process : Couldn't connect to remote machine.At line:1 char:12 + get-process <<<< -ComputerName server1,server2,server3 -name explorer | format-table processname,machinename + CategoryInfo : NotSpecified: (:) [Get-Process], InvalidOperatio nException + FullyQualifiedErrorId : System.InvalidOperationException,Microsoft.Power Shell.Commands.GetProcessCommand
我如何解决这个问题? 如果我仍然希望得到通知,如果进程不可用或正在运行。
添加-ErrorAction SilentlyContinue
继续你的命令。
当它不是一个错误,而是一个未处理的exception,你应该添加-EV Err -EA "SilentlyContinue"
为了赶上例外。 ( EA
是ErrorAction
的别名)
然后,您可以通过查看$Err[0]
来评估脚本中的错误。
简短的回答:在你的代码开始处添加$ErrorActionPreference = 'SilentlyContinue'
,所以你不需要添加-ErrorAction SilentlyContinue
继续每一个命令
长答案: https : //www.gitbook.com/book/devopscollective/the-big-book-of-powershell-error-handling/details