Skip to content

Commit eb47a37

Browse files
committed
Before new PR
1 parent abcb0de commit eb47a37

3 files changed

Lines changed: 140 additions & 172 deletions

File tree

Modules/CIPPCore/Public/Remove-CIPPTravelCAPolicy.ps1

Lines changed: 20 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -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
}
Lines changed: 5 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,18 @@
1-
function Remove-CIPPTravelNamedLocation {
1+
function Remove-CIPPTravelNamedLocation {
22
[CmdletBinding()]
33
param(
44
[string]$TenantFilter,
55
[string]$PolicyName,
6+
[string]$LocationId,
67
$Headers
78
)
89
try {
9-
$CountryLocationName = $PolicyName -replace 'TravelPolicy_', 'Travel_'
10-
$CountryLocationName = "${CountryLocationName}_Countries"
11-
$Locations = New-GraphGetRequest `
12-
-uri "https://graph.microsoft.com/beta/identity/conditionalAccess/namedLocations?`$filter=displayName eq '$CountryLocationName'&`$select=id,displayName" `
13-
-tenantid $TenantFilter -asApp $true
14-
foreach ($Loc in $Locations) {
15-
$null = New-GraphPOSTRequest `
16-
-uri "https://graph.microsoft.com/beta/identity/conditionalAccess/namedLocations/$($Loc.id)" `
17-
-tenantid $TenantFilter -type DELETE -body '' -asApp $true
18-
Write-LogMessage -headers $Headers -API 'Remove-CIPPTravelNamedLocation' `
19-
-message "Deleted country Named Location: $($Loc.displayName)" `
20-
-Sev 'Info' -tenant $TenantFilter
21-
}
10+
$null = New-GraphPOSTRequest -uri "https://graph.microsoft.com/beta/identity/conditionalAccess/namedLocations/$LocationId" -tenantid $TenantFilter -type DELETE -body '' -asApp $true
11+
Write-LogMessage -headers $Headers -API 'Remove-CIPPTravelNamedLocation' -message "Deleted Named Location $LocationId for policy '$PolicyName'" -Sev 'Info' -tenant $TenantFilter
2212
return "Successfully deleted Named Location for policy '$PolicyName'"
2313
} catch {
2414
$ErrorMessage = Get-CippException -Exception $_
25-
Write-LogMessage -headers $Headers -API 'Remove-CIPPTravelNamedLocation' `
26-
-message "Failed to delete Named Location for '$PolicyName': $($ErrorMessage.NormalizedError)" `
27-
-Sev 'Error' -tenant $TenantFilter -LogData $ErrorMessage
15+
Write-LogMessage -headers $Headers -API 'Remove-CIPPTravelNamedLocation' -message "Failed to delete Named Location for '$PolicyName': $($ErrorMessage.NormalizedError)" -Sev 'Error' -tenant $TenantFilter -LogData $ErrorMessage
2816
throw "Failed to delete Named Location: $($ErrorMessage.NormalizedError)"
2917
}
3018
}

0 commit comments

Comments
 (0)