在第二次尝试之前执行PowerShell tr​​y-catch退出循环

时间:2019-04-09 07:30:22

标签: powershell try-catch

我正在尝试循环查找一个未知的用户列表,该列表是否包含英语或瑞典语,除了此检查之外,我还需要在执行主要任务之前知道是否有一个名为“ CMG *”的帐户。 / p>

问题是我的第一个“尝试”行按预期运行,但第二个行被忽略,因此它似乎在“继续”时退出了循环。

在'if'语句中不能有2套'Try-Catch'吗?

我尝试的是翻转两组“ Try-Catch”,它会导致执行循环中的第一个,而忽略最下面的一个。

foreach($User in $Users){

    if($User."ADattribute"){

        try {
            if(!(Get-MailboxFolderPermission -Identity "$($User.UserPrincipalName):\Calendar" | Where-Object User -like 'CMG*')){

                Add-MailboxFolderPermission -Identity "$($User.UserPrincipalName):\Calendar" -User <SecretUser> -AccessRights Reviewer
            }

        continue
        }
        catch [System.Management.Automation.RemoteException] {

            Write-Host ":\Calendar could not be found"          
        }

        try {
            if(!(Get-MailboxFolderPermission -Identity "$($User.UserPrincipalName):\Kalender" | Where-Object User -like 'CMG*')){

                Add-MailboxFolderPermission -Identity "$($User.UserPrincipalName):\Kalender" -User <SecretUser> -AccessRights Reviewer
            }

        continue
        }
        catch [System.Management.Automation.RemoteException] {

            Write-Host ":\Kalender could not be found."          
        } 
    }
}

1 个答案:

答案 0 :(得分:1)

我认为您缺少关键字继续的功能。当执行continue关键字时,当前迭代停止,并继续下一个迭代。因此,我认为,如果删除了continue关键字,脚本将可以正常工作。

https://devblogs.microsoft.com/scripting/powershell-looping-the-continue-statement/