Skip to content

Commit b1506aa

Browse files
committed
Feat: Implement Invoke-ExecSetAPDeviceGroupTag function for updating AP device group tags
1 parent a14f999 commit b1506aa

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
using namespace System.Net
2+
3+
Function Invoke-ExecSetAPDeviceGroupTag {
4+
<#
5+
.FUNCTIONALITY
6+
Entrypoint
7+
.ROLE
8+
Endpoint.Autopilot.ReadWrite
9+
#>
10+
[CmdletBinding()]
11+
param($Request, $TriggerMetadata)
12+
$APIName = $Request.Params.CIPPEndpoint
13+
$Headers = $Request.Headers
14+
Write-LogMessage -Headers $Headers -API $APIName -message 'Accessed this API' -Sev 'Debug'
15+
$TenantFilter = $Request.Body.tenantFilter
16+
17+
try {
18+
$DeviceId = $Request.Body.deviceId
19+
$SerialNumber = $Request.Body.serialNumber
20+
$GroupTag = $Request.Body.groupTag
21+
22+
# Validation - GroupTag can be empty, but if provided, validate it
23+
if ($null -ne $GroupTag -and $GroupTag -ne '' -and $GroupTag.Length -gt 128) {
24+
$ValidationError = 'Group tag cannot exceed 128 characters.'
25+
}
26+
27+
if ($null -ne $ValidationError) {
28+
$Result = "Validation failed: $ValidationError"
29+
$StatusCode = [HttpStatusCode]::BadRequest
30+
} else {
31+
# Validation passed, proceed with Graph API call
32+
$body = @{
33+
groupTag = $GroupTag
34+
} | ConvertTo-Json
35+
36+
New-GraphPOSTRequest -uri "https://graph.microsoft.com/beta/deviceManagement/windowsAutopilotDeviceIdentities/$($DeviceId)/UpdateDeviceProperties" -tenantid $TenantFilter -body $body -method POST | Out-Null
37+
$Result = "Successfully updated group tag for device '$($DeviceId)' with serial number '$($SerialNumber)' to '$($GroupTag)'"
38+
Write-LogMessage -Headers $Headers -API $APIName -message $Result -Sev Info
39+
$StatusCode = [HttpStatusCode]::OK
40+
}
41+
} catch {
42+
$ErrorMessage = Get-CippException -Exception $_
43+
$Result = "Could not update group tag for device '$($DeviceId)' with serial number '$($SerialNumber)' to '$($GroupTag)'. Error: $($ErrorMessage.NormalizedError)"
44+
Write-LogMessage -Headers $Headers -API $APIName -message $Result -Sev Error -LogData $ErrorMessage
45+
$StatusCode = [HttpStatusCode]::BadRequest
46+
}
47+
48+
# Associate values to output bindings by calling 'Push-OutputBinding'.
49+
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
50+
StatusCode = $StatusCode
51+
Body = @{ Results = $Result }
52+
})
53+
}

0 commit comments

Comments
 (0)