Powershell try-catch是invoke命令

Powershell try-catch是invoke命令,powershell,try-catch,invoke,Powershell,Try Catch,Invoke,我有一个脚本块,它转到Dc并尝试链接选定的gpo和ou: forEach ($line in $listBox1.selecteditems) { try { Invoke-Command -Session $s -ScriptBlock {New-GPLink -Name $using:line -Target $using:SWITCH -ErrorAction Stop | Out-Null} $ResultsTextBox.AppendText("

我有一个脚本块,它转到Dc并尝试链接选定的gpo和ou:

forEach ($line in $listBox1.selecteditems) {
    try {
        Invoke-Command -Session $s -ScriptBlock {New-GPLink -Name $using:line -Target $using:SWITCH -ErrorAction Stop | Out-Null}
        $ResultsTextBox.AppendText("`r $line HAVE BEEN LINKED Successfully.`r") 
    } catch {
        $ResultsTextBox.AppendText("`n $line IS NOT LINKED TO THIS OU`n")
    }
}
这里唯一的问题是try-catch不起作用,如果用户试图链接一个已经链接的gpo-ou,我要做的就是提供用户信息。 但是,当我运行此块时,即使链接已经存在,用户也会获得输出“…已成功链接”。我将在命令行中看到一个错误输出,如下所示:

The GPO named 'MSAVS-Policy1' is already linked to a Scope of Management with Path 'OU=Domain
Controllers,DC=shahar,DC=local'.
    + CategoryInfo          : InvalidArgument: (Microsoft.Group...ewGPLinkCommand:NewGPLinkCommand) [New-GPLink], Argu
   mentException
    + FullyQualifiedErrorId : UnableToCreateNewLink,Microsoft.GroupPolicy.Commands.NewGPLinkCommand
    + PSComputerName        : dc01

这里我做了什么错误?< /p> < p>因为你正在执行<代码>新的GPLink(<代码> CMDLeT),我们有2个层次的错误处理要考虑——远程脚本块中的命令所引发的错误,然后由“代码> >调用命令< /COD>
try
块对远程发生的情况是“盲”的,并且只能捕获客户端上的错误,因此
Invoke命令
也必须将抛出错误视为终止,因此也将参数
-ErrorAction
添加到该参数中:

试试看{
调用命令{…}-ErrorAction Stop
}
抓住{
# ...
}

-ErrorAction Stop
添加到
调用命令中
,同时感谢您的澄清!