在第二次尝试发生之前,PowerShell尝试捕获退出循环

问题描述 投票:0回答:1

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

问题是我的第一个'Try'按预期运行了行,但第二个被忽略,所以它似乎在'continue'上退出循环。

你能否在'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."          
        } 
    }
}
powershell try-catch
1个回答
1
投票

我认为你缺少关键字continue的功能。执行continue关键字时,当前迭代停止,并继续下一次迭代。所以我认为如果你删除了你的脚本将作为例外工作的continue关键字。

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

© www.soinside.com 2019 - 2024. All rights reserved.