当我使用try{} catch{}
ping这些服务器时,我只收到一个cmdlet错误,而不是try-catch中的catch ...这里是什么问题?
foreach($s in $servers)
{
try{Test-Connection $s.server -Count 1}
catch{ Write-Host "error"}
}
答案 0 :(得分:7)
默认情况下,cmdlet会引发try / catch无法处理的非脚本终止错误。您可以使用$ErrorActionPreference
自动变量或-ErrorAction
通用参数来更改此行为:
# or `$ErrorActionPreference = 'Stop'`
foreach ($s in $servers) {
try {
Test-Connection -TargetName $s.server -Count 1 -ErrorAction Stop
}
catch {
"$_"
}
}
答案 1 :(得分:3)
测试连接不提供“ 终止错误”。这意味着不会触发try / catch。您可以通过在-ErrorAction Stop
命令中添加Test-Connection
来解决此问题。
foreach($s in $servers)
{
try{
Test-Connection $s.server -Count 1 -ErrorAction Stop
}catch{
"error"
}
}
答案 2 :(得分:-2)
请检查输入文件中的标题名称。 试试{Test-Connection $ s.server -Count 1}