Public/Get-UTCMDrift.ps1
|
function Get-UTCMDrift { <# .SYNOPSIS Lists all configuration drifts, or retrieves a specific drift by ID. .PARAMETER DriftId Optional GUID of a specific drift. .PARAMETER MonitorId Optional filter by monitor ID. .PARAMETER Status Optional filter by status: active or fixed. .EXAMPLE Get-UTCMDrift Get-UTCMDrift -MonitorId "abc..." -Status active #> [CmdletBinding()] param( [string]$DriftId, [string]$MonitorId, [ValidateSet('active','fixed')][string]$Status ) $uri = "$script:GraphBaseUrl/admin/configurationManagement/configurationDrifts" if ($DriftId) { $uri += "/$DriftId" $result = Invoke-UTCMGraphRequest -Uri $uri -Raw if ($result) { $result.PSObject.TypeNames.Insert(0, 'Microsoft.Graph.Beta.ConfigurationDrift') } return $result } $filters = @() if ($MonitorId) { $filters += "monitorId eq '$MonitorId'" } if ($Status) { $filters += "status eq '$Status'" } if ($filters.Count -gt 0) { $uri += "?`$filter=" + ($filters -join ' and ') } $result = Invoke-UTCMGraphRequest -Uri $uri # Add custom type name for formatting if ($result) { foreach ($drift in $result) { $drift.PSObject.TypeNames.Insert(0, 'Microsoft.Graph.Beta.ConfigurationDrift') } } return $result } |