function Get-PlatformInventory { <# .SYNOPSIS Get information about the Platform .LINK Get-MachineInventory #> [CmdletBinding()] [OutputType([System.Collections.Hashtable])] Param() $logLead = (Get-LogLeadName); $providerStopWatch = [System.Diagnostics.StopWatch]::StartNew() Write-Host "$logLead : [$($providerStopWatch.Elapsed)] : Getting OS Details" $platformInfo = Get-CIMInstance Win32_OperatingSystem -Namespace "root\CIMV2" -Property Caption, Version, OSArchitecture, Organization, SizeStoredInPagingFiles Write-Host "$logLead : [$($providerStopWatch.Elapsed)] : OS Details Retrieved" Write-Host "$logLead : [$($providerStopWatch.Elapsed)] : Getting System Details" $systemInfo = Get-CIMInstance Win32_ComputerSystem -Namespace "root\CIMV2" -Property DNSHostName, Domain Write-Host "$logLead : [$($providerStopWatch.Elapsed)] : System Details Retrieved" $psVersionInfo = $PSVersionTable.PSVersion $platformInfo = @{ GenerationTime = (Get-Date).DateTime; OS = "Windows"; PlatformFamily = "Windows"; Platform = $platformInfo.Caption; Version = $platformInfo.Version; Architecture = $platformInfo.OSArchitecture; Organization = $platformInfo.Organization; PageFileSize = $platformInfo.SizeStoredInPagingFiles; Hostname = $systemInfo.DNSHostName; DotNetVersion = (Get-DotNetVersion).FriendlyVersion; FQDN = (Get-FullyQualifiedServerName); PowerShell = @{ Version = $psVersionInfo.ToString(); Major = $psVersionInfo.Major; Minor = $psVersionInfo.Minor; Build = $psVersionInfo.Build; Revision = $psVersionInfo.Revision; } } Write-Host "$logLead : [$($providerStopWatch.Elapsed)] : Provider Complete" $providerStopWatch.Stop() return $platformInfo }