Private/Notifications/Get-ITFDeviceNotificationContext.ps1
|
function Get-ITFDeviceNotificationContext { [CmdletBinding()] param( [Parameter(Mandatory)] [string]$FleetHost, [Parameter(Mandatory)] [string]$DiscoveryUrl, [Parameter(Mandatory)] [string]$CorrelationId ) $username = $null $serial = $null $model = $null $osDisplay = $null try { $cs = Get-CimInstance -ClassName Win32_ComputerSystem -ErrorAction Stop if ($cs.UserName) { $username = [string]$cs.UserName } if ($cs.Model) { $model = [string]$cs.Model } } catch { } if (-not $username) { try { if ($env:USERDOMAIN -and $env:USERNAME) { $username = ('{0}\{1}' -f $env:USERDOMAIN, $env:USERNAME) } elseif ($env:USERNAME) { $username = [string]$env:USERNAME } } catch { } } try { $bios = Get-CimInstance -ClassName Win32_BIOS -ErrorAction Stop if ($bios.SerialNumber) { $serial = [string]$bios.SerialNumber } } catch { } try { $cv = Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion' -ErrorAction Stop $product = [string]$cv.ProductName $displayVersion = $null if ($cv.PSObject.Properties.Name -contains 'DisplayVersion') { $displayVersion = [string]$cv.DisplayVersion } if (-not $displayVersion -and $cv.PSObject.Properties.Name -contains 'ReleaseId') { $displayVersion = [string]$cv.ReleaseId } $build = [string]$cv.CurrentBuildNumber $ubr = $null if ($cv.PSObject.Properties.Name -contains 'UBR') { $ubr = [string]$cv.UBR } $buildFull = $build if ($ubr) { $buildFull = ('{0}.{1}' -f $build, $ubr) } if ($product -and $displayVersion -and $buildFull) { $osDisplay = ('{0} {1} ({2})' -f $product, $displayVersion, $buildFull) } elseif ($product -and $buildFull) { $osDisplay = ('{0} ({1})' -f $product, $buildFull) } } catch { } return [pscustomobject]@{ FleetHost = $FleetHost DiscoveryUrl = $DiscoveryUrl CorrelationId = $CorrelationId Username = $username SerialNumber = $serial DeviceModel = $model OSVersionBuild = $osDisplay ComputerName = $env:COMPUTERNAME } } |