Public/Initialize-UTCM.ps1
|
function Initialize-UTCM { <# .SYNOPSIS One-shot convenience to set up UTCM SP and grant workload access (uses Ensure-GraphConnection internally). .DESCRIPTION Runs Enable-UTCM then Grant-UTCMWorkloadAccess with your chosen workload set. Prompts before privileged setup. -WhatIf previews the selected workloads without connecting or making grants. .EXAMPLE Initialize-UTCM -Workloads Entra,Exchange,Intune,SecurityAndCompliance,Teams #> [CmdletBinding(SupportsShouldProcess, ConfirmImpact='High')] param( [ValidateSet('Entra','Exchange','Intune','SecurityAndCompliance','Teams')] [string[]]$Workloads = @('Entra','Exchange','Intune','SecurityAndCompliance','Teams') ) if (-not $PSCmdlet.ShouldProcess("UTCM setup for workloads: $($Workloads -join ', ')", 'Create the official service principal and grant workload permissions')) { return } try { $scopes = @('Application.ReadWrite.All','AppRoleAssignment.ReadWrite.All') if ('Teams' -in $Workloads) { $scopes += 'RoleManagement.ReadWrite.Directory' } Ensure-GraphConnection -Scopes $scopes Write-Log -Color Cyan -Message "Initializing UTCM setup..." $null = Enable-UTCM -Confirm:$false Grant-UTCMWorkloadAccess -Workloads $Workloads -Confirm:$false Write-Log -Color Green -Message "UTCM initialization complete." } catch { Write-Log -Color Red -Message "Initialize-UTCM failed: $($_.Exception.Message)" throw } } |