Public/Get-NCPatchDetails.ps1
|
function Get-NCPatchDetails { <# .SYNOPSIS Extracts PME status fields from an N-Central appliance task object. .DESCRIPTION Walks the task object's serviceDetails array looking for entries whose detailName matches 'pme_status' and 'pme_threshold_status'. Field paths are strictly mapped from API documentation: $TaskObject.serviceDetails[n].detailName - the field name key $TaskObject.serviceDetails[n].detailValue - the field value Returns a PSCustomObject with PMEStatus, PMEThresholdStatus, and the raw task object for future extensibility. .PARAMETER TaskObject The appliance task object returned by Get-NCApplianceTask. .EXAMPLE $details = Get-NCPatchDetails -TaskObject $task Write-Host "PME Status: $($details.PMEStatus)" #> [CmdletBinding()] param( [Parameter(Mandatory)] [object]$TaskObject ) $PMEStatus = $null $PMEThresholdStatus = $null # Locate the strictly defined serviceDetails array $results = $TaskObject.serviceDetails if ($null -eq $results -or @($results).Count -eq 0) { Write-Verbose " No serviceDetails array found in task object. raw task: $($TaskObject | ConvertTo-Json -Depth 2 -Compress -WarningAction SilentlyContinue)" return [PSCustomObject]@{ PMEStatus = 'Unknown' PMEThresholdStatus = 'Unknown' RawDetails = $TaskObject } } Write-Verbose " Task serviceDetails array has $(@($results).Count) entries" Write-Verbose " First result entry: $($results[0] | ConvertTo-Json -Depth 2 -Compress -WarningAction SilentlyContinue)" foreach ($entry in $results) { $key = $entry.detailName $val = $entry.detailValue switch -Wildcard ($key) { { $_ -ieq 'pme_status' } { $PMEStatus = $val } { $_ -ieq 'pme_threshold_status' } { $PMEThresholdStatus = $val } } } Write-Verbose " PMEStatus='$PMEStatus' PMEThresholdStatus='$PMEThresholdStatus'" return [PSCustomObject]@{ PMEStatus = if ($null -ne $PMEStatus) { $PMEStatus } else { 'N/A' } PMEThresholdStatus = if ($null -ne $PMEThresholdStatus) { $PMEThresholdStatus } else { 'N/A' } RawDetails = $TaskObject } } |