Skip to content

Commit 00f594a

Browse files
authored
Merge pull request #341 from KelvinTegelaar/dev
[pull] dev from KelvinTegelaar:dev
2 parents 44366c9 + 5c84a00 commit 00f594a

File tree

3 files changed

+8
-5
lines changed

3 files changed

+8
-5
lines changed

Modules/CIPPCore/Public/Entrypoints/HTTP Functions/CIPP/Settings/Invoke-ExecExchangeRoleRepair.ps1

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ function Invoke-ExecExchangeRoleRepair {
1515

1616
try {
1717
Write-Information "Starting Exchange Organization Management role repair for tenant: $($Tenant.defaultDomainName)"
18-
$OrgManagementRoles = New-ExoRequest -tenantid $Tenant.customerId -cmdlet 'Get-ManagementRoleAssignment' -cmdParams @{ RoleAssignee = 'Organization Management'; Delegating = $false } | Select-Object -Property Role, Guid
18+
$OrgManagementRoles = New-ExoRequest -tenantid $Tenant.customerId -cmdlet 'Get-ManagementRoleAssignment' -cmdParams @{ Delegating = $false } | Where-Object { $_.RoleAssigneeName -eq 'Organization Management' } | Select-Object -Property Role, Guid
1919
Write-Information "Found $($OrgManagementRoles.Count) Organization Management roles in Exchange"
2020

2121
$RoleDefinitions = New-GraphGetRequest -tenantid $Tenant.customerId -uri 'https://graph.microsoft.com/beta/roleManagement/exchange/roleDefinitions'
@@ -53,7 +53,7 @@ function Invoke-ExecExchangeRoleRepair {
5353
state = 'success'
5454
resultText = "Successfully repaired the missing Organization Management roles: $($MissingOrgMgmtRoles.displayName -join ', ')"
5555
}
56-
Write-LogMessage -headers $Headers -tenant $Tenant.defaultDomainName -tenantid $Tenant.customerId -Message "Successfully repaired the missing Organization Management roles: $($MissingOrgMgmtRoles.displayName -join ', '). Run another Tenant Access check after waiting a bit for replication." -sev 'Info'
56+
Write-LogMessage -API 'ExecExchangeRoleRepair' -headers $Headers -tenant $Tenant.defaultDomainName -tenantid $Tenant.customerId -Message "Successfully repaired the missing Organization Management roles: $($MissingOrgMgmtRoles.displayName -join ', '). Run another Tenant Access check after waiting a bit for replication." -sev 'Info'
5757
} else {
5858
# Get roles that failed to repair
5959
$FailedRoles = $RepairResults | Where-Object { $_.status -ne 201 } | ForEach-Object {
@@ -65,11 +65,13 @@ function Invoke-ExecExchangeRoleRepair {
6565
if ($RepairResults.status -in (401, 403, 500)) {
6666
$PermissionError = $true
6767
}
68+
$LogData = $RepairResults | Select-Object -Property id, status, body
6869
$Results = @{
6970
state = 'error'
7071
resultText = "Failed to repair the missing Organization Management roles: $($FailedRoles -join ', ').$(if ($PermissionError) { " This may be due to insufficient permissions. The required Graph Permission is 'Application - RoleManagement.ReadWrite.Exchange'" })"
7172
}
72-
Write-LogMessage -headers $Headers -tenant $Tenant.defaultDomainName -tenantid $Tenant.customerId -Message "Failed to repair the missing Organization Management roles: $($FailedRoles -join ', ')" -sev 'Error'
73+
Write-LogMessage -API 'ExecExchangeRoleRepair' -headers $Headers -tenant $Tenant.defaultDomainName -tenantid $Tenant.customerId -Message "Failed to repair the missing Organization Management roles: $($FailedRoles -join ', ')" -sev 'Error' -LogData $LogData
74+
Write-Warning 'Exchange role repair failed'
7375
}
7476
} else {
7577
$Results = @{
@@ -80,7 +82,7 @@ function Invoke-ExecExchangeRoleRepair {
8082
} catch {
8183
$ErrorMessage = Get-CippException -Exception $_
8284
Write-Warning "Exception during Exchange Organization Management role repair: $($ErrorMessage.NormalizedError)"
83-
Write-LogMessage -headers $Headers -tenant $Tenant.defaultDomainName -tenantid $Tenant.customerId -Message "Exchange Organization Management role repair failed: $($ErrorMessage.NormalizedError)" -sev 'Error' -LogData $ErrorMessage
85+
Write-LogMessage -API 'ExecExchangeRoleRepair' -headers $Headers -tenant $Tenant.defaultDomainName -tenantid $Tenant.customerId -Message "Exchange Organization Management role repair failed: $($ErrorMessage.NormalizedError)" -sev 'Error' -LogData $ErrorMessage
8486
$Results = @{
8587
state = 'error'
8688
resultText = "Exchange Organization Management role repair failed: $($ErrorMessage.NormalizedError)"

Modules/CIPPCore/Public/Entrypoints/HTTP Functions/CIPP/Settings/Invoke-ExecPermissionRepair.ps1

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ function Invoke-ExecPermissionRepair {
2626

2727
$NewPermissions = @{}
2828
foreach ($AppId in $AppIds) {
29+
if (!$AppId) { continue }
2930
$ApplicationPermissions = [system.collections.generic.list[object]]::new()
3031
$DelegatedPermissions = [system.collections.generic.list[object]]::new()
3132

Modules/CIPPCore/Public/Test-CIPPAccessTenant.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ function Test-CIPPAccessTenant {
106106
try {
107107
$null = New-ExoRequest -tenantid $Tenant.customerId -cmdlet 'Get-OrganizationConfig' -ErrorAction Stop
108108

109-
$OrgManagementRoles = New-ExoRequest -tenantid $Tenant.customerId -cmdlet 'Get-ManagementRoleAssignment' -cmdParams @{ RoleAssignee = 'Organization Management'; Delegating = $false } | Select-Object -Property Role, Guid
109+
$OrgManagementRoles = New-ExoRequest -tenantid $Tenant.customerId -cmdlet 'Get-ManagementRoleAssignment' -cmdParams @{ Delegating = $false } | Where-Object { $_.RoleAssigneeName -eq 'Organization Management' } | Select-Object -Property Role, Guid
110110
Write-Information "Found $($OrgManagementRoles.Count) Organization Management roles in Exchange"
111111
$Results.OrgManagementRoles = $OrgManagementRoles
112112

0 commit comments

Comments
 (0)