Private/MDM/Get-ITFOMADMConnInfo.ps1
|
function Get-ITFOMADMConnInfo { [CmdletBinding()] param( [Parameter(Mandatory)] [string]$EnrollmentId ) $connKey = "HKLM:\SOFTWARE\Microsoft\Provisioning\OMADM\Accounts\$EnrollmentId\Protected\ConnInfo" $addrKey = "HKLM:\SOFTWARE\Microsoft\Provisioning\OMADM\Accounts\$EnrollmentId\Protected\AddrInfo" if (-not (Test-Path $connKey)) { return $null } try { $p = Get-ItemProperty -Path $connKey -ErrorAction Stop $addr = $null if (Test-Path $addrKey) { try { $addr = (Get-ItemProperty -Path $addrKey -Name Addr -ErrorAction SilentlyContinue).Addr } catch { } } $ci = [ITFOMADMConnInfo]::new() $ci.EnrollmentId = $EnrollmentId $ci.Addr = if ($addr) { [string]$addr } else { $null } if ($null -ne $p.LastSessionResult) { $ci.LastSessionResult = [int]$p.LastSessionResult } function Parse-OmadmTime([object]$s) { if (-not $s) { return $null } $str = [string]$s # Examples observed: 20251223T072908Z try { return [datetime]::ParseExact($str, 'yyyyMMdd''T''HHmmss''Z''', [Globalization.CultureInfo]::InvariantCulture, [Globalization.DateTimeStyles]::AssumeUniversal).ToUniversalTime() } catch { try { return [datetime]::Parse($str, [Globalization.CultureInfo]::InvariantCulture) } catch { return $null } } } if ($p.PSObject.Properties.Name -contains 'ServerLastSuccessTime') { $ci.ServerLastSuccessTime = Parse-OmadmTime $p.ServerLastSuccessTime } if ($p.PSObject.Properties.Name -contains 'ServerLastAccessTime') { $ci.ServerLastAccessTime = Parse-OmadmTime $p.ServerLastAccessTime } return $ci } catch { return $null } } |