Private/Get-InfraPulseInventory.ps1

function Get-InfraPulseInventory {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory)]
        [psobject]$Context
    )

    $scriptBlock = {
        $isWindowsHost = $env:OS -eq 'Windows_NT'
        $fqdn = $null
        try {
            $fqdn = [System.Net.Dns]::GetHostEntry([Environment]::MachineName).HostName
        }
        catch {
            $fqdn = [Environment]::MachineName
        }

        if ($isWindowsHost) {
            if (Get-Command -Name Get-CimInstance -ErrorAction SilentlyContinue) {
                $operatingSystem = Get-CimInstance -ClassName Win32_OperatingSystem -ErrorAction Stop
                $computerSystem = Get-CimInstance -ClassName Win32_ComputerSystem -ErrorAction Stop
            }
            else {
                $operatingSystem = Get-WmiObject -Class Win32_OperatingSystem -ErrorAction Stop
                $computerSystem = Get-WmiObject -Class Win32_ComputerSystem -ErrorAction Stop
            }

            [pscustomobject]@{
                ComputerName       = $env:COMPUTERNAME
                Fqdn               = $fqdn
                Platform           = 'Windows'
                OperatingSystem    = $operatingSystem.Caption
                OperatingSystemSku = $operatingSystem.OperatingSystemSKU
                Version            = $operatingSystem.Version
                BuildNumber        = $operatingSystem.BuildNumber
                Architecture       = $operatingSystem.OSArchitecture
                Manufacturer       = $computerSystem.Manufacturer
                Model              = $computerSystem.Model
                Domain             = $computerSystem.Domain
                PartOfDomain       = [bool]$computerSystem.PartOfDomain
                PowerShellVersion  = $PSVersionTable.PSVersion.ToString()
                PowerShellEdition  = if ($PSVersionTable.PSEdition) { $PSVersionTable.PSEdition } else { 'Desktop' }
                CollectedAtUtc     = [DateTime]::UtcNow
            }
        }
        else {
            [pscustomobject]@{
                ComputerName       = [Environment]::MachineName
                Fqdn               = $fqdn
                Platform           = [System.Runtime.InteropServices.RuntimeInformation]::OSDescription
                OperatingSystem    = [System.Runtime.InteropServices.RuntimeInformation]::OSDescription
                OperatingSystemSku = $null
                Version            = [Environment]::OSVersion.Version.ToString()
                BuildNumber        = $null
                Architecture       = [System.Runtime.InteropServices.RuntimeInformation]::OSArchitecture.ToString()
                Manufacturer       = $null
                Model              = $null
                Domain             = $null
                PartOfDomain       = $false
                PowerShellVersion  = $PSVersionTable.PSVersion.ToString()
                PowerShellEdition  = $PSVersionTable.PSEdition
                CollectedAtUtc     = [DateTime]::UtcNow
            }
        }
    }

    return Invoke-InfraPulseCommand -Context $Context -ScriptBlock $scriptBlock
}