@@ -3,69 +3,52 @@ function Remove-CIPPTravelCAPolicy {
33 param (
44 [string ]$TenantFilter ,
55 [string ]$PolicyName ,
6+ [string ]$PolicyId ,
67 [string []]$Users ,
78 $Headers
89 )
910 try {
10- # Find and delete the travel CA policy by display name
11- $Policies = New-GraphGetRequest `
12- - uri " https://graph.microsoft.com/beta/identity/conditionalAccess/policies?`$ filter=displayName eq '$PolicyName '&`$ select=id,displayName" `
13- - tenantid $TenantFilter - asApp $true
14- if (-not $Policies ) {
15- Write-LogMessage - headers $Headers - API ' Remove-CIPPTravelCAPolicy' `
16- - message " Travel policy '$PolicyName ' not found, may already be deleted" `
17- - Sev ' Info' - tenant $TenantFilter
11+ if ($PolicyId ) {
12+ $null = New-GraphPOSTRequest - uri " https://graph.microsoft.com/beta/identity/conditionalAccess/policies/$PolicyId " - tenantid $TenantFilter - type DELETE - body ' ' - asApp $true
13+ Write-LogMessage - headers $Headers - API ' Remove-CIPPTravelCAPolicy' - message " Deleted travel CA policy: $PolicyName ($PolicyId )" - Sev ' Info' - tenant $TenantFilter
1814 } else {
19- foreach ($Policy in $Policies ) {
20- $null = New-GraphPOSTRequest `
21- - uri " https://graph.microsoft.com/beta/identity/conditionalAccess/policies/$ ( $Policy.id ) " `
22- - tenantid $TenantFilter - type DELETE - body ' ' - asApp $true
23- Write-LogMessage - headers $Headers - API ' Remove-CIPPTravelCAPolicy' `
24- - message " Deleted travel CA policy: $ ( $Policy.displayName ) " `
25- - Sev ' Info' - tenant $TenantFilter
15+ # Fallback: search by display name if ID is not available
16+ $Policies = New-GraphGetRequest - uri " https://graph.microsoft.com/beta/identity/conditionalAccess/policies?`$ filter=displayName eq '$PolicyName '&`$ select=id,displayName" - tenantid $TenantFilter - asApp $true
17+ if (-not $Policies ) {
18+ Write-LogMessage - headers $Headers - API ' Remove-CIPPTravelCAPolicy' - message " Travel policy '$PolicyName ' not found, may already be deleted" - Sev ' Info' - tenant $TenantFilter
19+ } else {
20+ foreach ($Policy in $Policies ) {
21+ $null = New-GraphPOSTRequest - uri " https://graph.microsoft.com/beta/identity/conditionalAccess/policies/$ ( $Policy.id ) " - tenantid $TenantFilter - type DELETE - body ' ' - asApp $true
22+ Write-LogMessage - headers $Headers - API ' Remove-CIPPTravelCAPolicy' - message " Deleted travel CA policy: $ ( $Policy.displayName ) " - Sev ' Info' - tenant $TenantFilter
23+ }
2624 }
2725 }
2826
29- # Remove users from TravelingUsers group only if not active in other travel policies
3027 if ($Users -and $Users.Count -gt 0 ) {
31- $ActivePolicies = New-GraphGetRequest `
32- - uri " https://graph.microsoft.com/beta/identity/conditionalAccess/policies?`$ filter=startsWith(displayName,'TravelPolicy_')&`$ select=id,displayName,conditions" `
33- - tenantid $TenantFilter - asApp $true
34- $TravelGroup = New-GraphGetRequest `
35- - uri " https://graph.microsoft.com/beta/groups?`$ filter=displayName eq 'TravelingUsers'&`$ select=id" `
36- - tenantid $TenantFilter - asApp $true - ComplexFilter
28+ $ActivePolicies = New-GraphGetRequest - uri " https://graph.microsoft.com/beta/identity/conditionalAccess/policies?`$ filter=startsWith(displayName,'TravelPolicy_')&`$ select=id,displayName,conditions" - tenantid $TenantFilter - asApp $true
29+ $TravelGroup = New-GraphGetRequest - uri " https://graph.microsoft.com/beta/groups?`$ filter=displayName eq 'TravelingUsers'&`$ select=id" - tenantid $TenantFilter - asApp $true - ComplexFilter
3730 $TravelGroupId = $TravelGroup [0 ].id
3831 foreach ($User in $Users ) {
39- # Check if user is in any other active travel policy
4032 $StillActive = $ActivePolicies | Where-Object {
41- $_.displayName -ne $PolicyName -and
33+ $_.id -ne $PolicyId -and
4234 $_.conditions.users.includeUsers -contains $User
4335 }
4436 if (-not $StillActive ) {
4537 try {
46- $null = New-GraphPOSTRequest `
47- - uri " https://graph.microsoft.com/beta/groups/$TravelGroupId /members/$User /`$ ref" `
48- - tenantid $TenantFilter - type DELETE - body ' ' - asApp $true
49- Write-LogMessage - headers $Headers - API ' Remove-CIPPTravelCAPolicy' `
50- - message " Removed user $User from TravelingUsers (no other active travel policies)" `
51- - Sev ' Info' - tenant $TenantFilter
38+ $null = New-GraphPOSTRequest - uri " https://graph.microsoft.com/beta/groups/$TravelGroupId /members/$User /`$ ref" - tenantid $TenantFilter - type DELETE - body ' ' - asApp $true
39+ Write-LogMessage - headers $Headers - API ' Remove-CIPPTravelCAPolicy' - message " Removed user $User from TravelingUsers (no other active travel policies)" - Sev ' Info' - tenant $TenantFilter
5240 } catch {
5341 Write-Information " Could not remove user $User from group (may already be removed): $ ( $_.Exception.Message ) "
5442 }
5543 } else {
56- Write-LogMessage - headers $Headers - API ' Remove-CIPPTravelCAPolicy' `
57- - message " User $User kept in TravelingUsers - still active in: $ ( $StillActive.displayName -join ' , ' ) " `
58- - Sev ' Info' - tenant $TenantFilter
44+ Write-LogMessage - headers $Headers - API ' Remove-CIPPTravelCAPolicy' - message " User $User kept in TravelingUsers - still active in: $ ( $StillActive.displayName -join ' , ' ) " - Sev ' Info' - tenant $TenantFilter
5945 }
6046 }
6147 }
62-
6348 return " Successfully deleted travel policy '$PolicyName ' and associated resources"
6449 } catch {
6550 $ErrorMessage = Get-CippException - Exception $_
66- Write-LogMessage - headers $Headers - API ' Remove-CIPPTravelCAPolicy' `
67- - message " Failed to delete travel policy '$PolicyName ': $ ( $ErrorMessage.NormalizedError ) " `
68- - Sev ' Error' - tenant $TenantFilter - LogData $ErrorMessage
51+ Write-LogMessage - headers $Headers - API ' Remove-CIPPTravelCAPolicy' - message " Failed to delete travel policy '$PolicyName ': $ ( $ErrorMessage.NormalizedError ) " - Sev ' Error' - tenant $TenantFilter - LogData $ErrorMessage
6952 throw " Failed to delete travel policy: $ ( $ErrorMessage.NormalizedError ) "
7053 }
7154}
0 commit comments