Sha*_*iss 2 error-handling powershell
我有一些用户在 gui 脚本中选择的选定项目,那些代表 GPO 现在我有他想要链接到的 OU。代码有效,但我想为用户提供链接和无法链接的结果,因为它们已经链接但是由于某种原因,这个 try catch 不会这样做,gui 输出成功的链接并写入链接已经存在的控制台错误
$ResultsTextBox.clear()
#$listBox1.selecteditems
$SWITCH = Get-ADOrganizationalUnit -filter * -Property CanonicalName | Where-Object {$_.CanonicalName -eq $listBox2.SelectedItem}
forEach ($line in $listBox1.selecteditems){
#Link each selected item GPO to the OU
try {
New-GPlink -name $line -target $SWITCH
$ResultsTextBox.AppendText("`n GPO: $line HAVE BEEN LINKED Successfully.`n")
}
catch{$ResultsTextBox.AppendText("`n COULDN NOT LINK GPO: $line TO $SWITCH `n")
}
}
Run Code Online (Sandbox Code Playgroud)
这里有什么问题?
Try-Catch 块只会捕获终止错误。您可以通过设置特殊的 ErrorPreference 或 ErrorAction 变量来做到这一点。
此方法会导致几乎每个 cmdlet 在发生错误时终止脚本执行。如果它满足您的需要,您可以简单地执行此操作:
在脚本的顶部声明
$ErrorActionPreference = 'Stop'
Run Code Online (Sandbox Code Playgroud)
使用它,您可以控制不同 PowerShell cmdlet 在错误期间的行为方式,从而为您提供更多控制:
# For every cmdlet inside the try block add -ErrorAction to Stop for the try block to "catch".
New-GPlink -name $line -target $SWITCH -ErrorAction STOP
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
72 次 |
| 最近记录: |