如果找不到DL,我正试图捕捉错误。我已经写了下面的代码
try
{
Get-DistributionGroup -Identity "#AB-TestDL"|select ManagedBy -ErrorAction Stop
}
catch
{
if($Error[0] -match "couldn't be found on")
{
Write-Host "DL not found"
}
}
但当我运行代码时,它会抛出一个错误:#AB TestDL";在上找不到。。。请帮助我捕获此错误。谢谢
尝试在Get-DistributionGroup -Identity "#AB-TestDL"
CmdLet上使用-ErrorAction Stop
参数,而不是Select-Object
。
Select-Object
可以用于创建新对象,但当属性不存在时,这对CmdLet来说不是错误。
C:> [PSCustomObject]@{ Test = 123 } | Select Test2 -ErrorAction Stop
Test2
-----
然而,您可以使其工作方式不同(而我仍然建议将-ErrorAction Stop
移动到第一个CmdLet(:
Set-StrictMode -Version 3
$Object = [PSCustomObject] @{
Test = 123
}
try {
$null = $Object.Test2
} catch {
throw "I don't extist and catch because of strictmode version 3"
}
只是我脑海中浮现的一个想法。事实上,我从来没有这样使用严格模式。