gpt4 book ai didi

powershell - 为 ManagementObjectNotFoundException 和 ActiveDirectory/Outlook 尝试 Catch/Exception

转载 作者:行者123 更新时间:2023-12-02 23:18:26 27 4
gpt4 key购买 nike

这可能是一个非常基本的问题,但我还没有在表格上看到它。忍受我,我是PowerShell的新手

当在我们的 Active Directory 数据库中找不到用户名时,我正在 try catch 此异常(ManagementObjectNotFoundException)。

Set-ExecutionPolicy RemoteSigned
$UserCredential = Get-Credential
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection
Import-PSSession $Session -DisableNameChecking
$user2 = Read-Host 'Enter account name of the user who is being added'
try {
$user = Read-Host 'Enter account name of the users email you wish to have access to'
Add-MailboxPermission –Identity $user -User $user2 -AccessRights FullAccess –InheritanceType All –Automapping $false
}
catch [ManagementObjectNotFoundException] {
"User not found, try again"
$user = Read-Host 'Enter account name of the users email you wish to have access to - Test'
}
Remove-PSSession $Session

我也试过这个选项:
catch {
Write-Host "An error occurred:"
Write-Host $_
}

我仍然收到此错误:
The operation couldn't be performed because object 'test1' couldn't be found on 'BN4PR12A003DC03.NAMPR12A003.PROD.OUTLOOK.COM'.
+ CategoryInfo : NotSpecified: (:) [Add-MailboxPermission], ManagementObjectNotFoundException
+ FullyQualifiedErrorId : [Server=BYAPR12MB2885,RequestId=25cd1eb7-055e-4250-bd43-6d2f5d528f12,TimeStamp=11/12/2019 9:38:16 PM] [FailureCategory=Cmdlet-ManagementObjectNotFoundException] C5EDB577,Microsoft.Exchange.Management.RecipientTasks.AddMailboxP
ermission
+ PSComputerName : outlook.office365.com

最佳答案

你需要抛出所谓的 终止错误 为了捕获异常。可以设置错误action preference在您的脚本级别:

$ErrorActionPreference = "Stop"
或添加 -ErrorAction Stop到要从中捕获错误的任何 cmdlet。如果异常未终止,则无法捕获错误。默认情况下,错误设置为 Continue但可以通过上述方式之一进行更改:
错误操作首选项
  • 继续 :显示错误但继续执行。这是默认设置。
  • 默默地继续 :隐藏错误并继续执行。
  • 停止 : 引发终止错误。错误操作必须设置为 Stop捕捉异常。
  • 询价 : 询问用户要做什么。
  • 暂停 : 与 Powershell 工作流一起使用。暂停工作流作业,以便稍后恢复。
  • 忽略 : 类似于 SilentlyContinue ,它会抑制错误并继续执行。只能用 -ErrorAction 设置参数,Ignore不能设置为 $ErrorActionPreference .

  • 关于终止错误的说明
    请注意,终止错误 无法转换为非终止 以同样的方式,我们可以将非终止错误视为终止。换句话说,大多数源自框架的异常或从 PowerShell 抛出的带有 throw 的异常声明必须通过 try 处理/ catch/ finally block 。都不是 $ErrorActionPreference-ErrorAction与如何处理异常有任何关系。
    由于此限制包括 IgnoreSilentlyContinue , 您不能使用这些首选项值抑制或忽略终止错误 .你 必须处理它们以防止脚本终止。

    关于powershell - 为 ManagementObjectNotFoundException 和 ActiveDirectory/Outlook 尝试 Catch/Exception,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58827174/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com