我有一些选择的项目,用户选择了一个gui脚本,那些代表GPO现在我有OU他想链接到他们。代码可以工作,但是我希望结果给用户,因为它们已经链接了,所以不能链接,但是由于某些原因,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")
}
}这里出什么问题了?
发布于 2020-05-15 08:54:04
Try-Catch块只捕获终止错误。您可以通过设置特殊的ErrorPreference或ErrorAction变量来做到这一点。
方法1:
每当发生错误时,此方法将导致几乎每个cmdlet都终止脚本执行。只要它满足了您的需要,您就可以这样做:
在脚本顶部声明
$ErrorActionPreference = 'Stop'方法2:
使用它,您可以控制错误期间不同的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请检查终于来了。
发布于 2020-05-15 08:54:07
要么将-ErrorAction Stop添加到您想要捕获的每个命令:
Try {
New-GPlink -name $line -target $SWITCH -ErrorAction Stop
}
Catch {
$_
}或设定
$ErrorActionPreference = 'Stop'在你剧本的开头。
https://stackoverflow.com/questions/61815206
复制相似问题