Skip to content

Instantly share code, notes, and snippets.

@auash
Last active April 18, 2024 23:22
Show Gist options
  • Save auash/a8b2b570f390538429fba5252c599dc9 to your computer and use it in GitHub Desktop.
Save auash/a8b2b570f390538429fba5252c599dc9 to your computer and use it in GitHub Desktop.
Start-Transcript -Path "$env:windir\Logs\Hardware Inventory (Intune Script).log"
$ScriptVersion = "02"
$Inventory = @{
Device_Name="";
Device_SerialNumber="";
Device_Manufacturer="";
Device_Model="";
Device_SKU="";
Device_RAM="";
BIOS_Version="";
BIOS_Date="";
CPU_Name="";
CPU_Description="";
CPU_Cores="";
CPU_LogicalProcessors="";
OS_Version="";
OS_InstallDateUTC="";
Disk_Model="";
Disk_InterfaceType="";
Disk_SizeGB="";
Disk_SerialNumber="";
Disk_Partitions="";
Disk_FirmwareVersion="";
Disk_Status="";
NetworkAdapter_Description="";
NetworkAdapter_MAC="";
NetworkAdapter_Manufacturer="";
NetworkAdapter_PNPDeviceID="";
NetworkAdapter_DriverVersion=""
NetworkAdapter_DriverDate=""
Graphics_Name="";
Graphics_DriverDate="";
Graphics_DriverVersion="";
Graphics_PNPDeviceID=""
}
$CPU_WMI = @(Get-WmiObject -Class "Win32_Processor")
$BIOS_WMI = Get-WmiObject -Class "Win32_BIOS"
$ComputerSystem_WMI = Get-WmiObject -Class "Win32_ComputerSystem"
$OS_Registry = Get-Item "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion"
$Disk_WMI = @(Get-WmiObject -Class "Win32_DiskDrive" -Filter "MediaType Like 'Fixed%'")
$Network_WMI = @(Get-WmiObject -Class "Win32_NetworkAdapter" -Filter "PhysicalAdapter = True")
$Drivers_WMI = Get-WmiObject -Class "Win32_PnPSignedDriver"
$Graphics_WMI = @(Get-WmiObject -Class "Win32_VideoController")
$Inventory.CPU_Name = ($CPU_WMI | Select-Object Name).Name -join ","
$Inventory.CPU_Description = ($CPU_WMI | Select-Object Description).Description -join ","
$Inventory.CPU_Cores = ($CPU_WMI | Select-Object NumberOfCores).NumberOfCores -join ","
$Inventory.CPU_LogicalProcessors = ($CPU_WMI | Select-Object NumberOfLogicalProcessors).NumberOfLogicalProcessors -join ","
$Inventory.BIOS_Version = $BIOS_WMI.Name
$Inventory.BIOS_Date = $BIOS_WMI.ReleaseDate
$Inventory.Device_SerialNumber = $BIOS_WMI.SerialNumber
$Inventory.Device_Name = $env:COMPUTERNAME
$Inventory.Device_Model = $ComputerSystem_WMI.Model
$Inventory.Device_Manufacturer = $ComputerSystem_WMI.Manufacturer
$Inventory.Device_SKU = $ComputerSystem_WMI.SystemSKUNumber
$Inventory.Device_RAM = "$($ComputerSystem_WMI.TotalPhysicalMemory)"
$Inventory.OS_Version = "$([System.Environment]::OSVersion.Version.Major).$([System.Environment]::OSVersion.Version.Minor).$([System.Environment]::OSVersion.Version.Build).$($OS_Registry.GetValue("UBR"))"
$Inventory.OS_InstallDateUTC = [System.DateTimeOffset]::FromUnixTimeSeconds([double]$OS_Registry.GetValue("InstallDate")).UtcDateTime.ToString("yyyy-MM-dd HH:mm:ss") #eg: Monday, 27 February 2023 1:22:59 PM = 2023-02-27 13:22:59
$Inventory.Disk_Model = ($Disk_WMI | Select-Object Model).Model -join ","
$Inventory.Disk_InterfaceType = ($Disk_WMI | Select-Object InterfaceType).InterfaceType -join ","
$Inventory.Disk_SizeGB = "$(($Disk_WMI | Select-Object Size).Size / 1GB -join ",")"
$Inventory.Disk_SerialNumber = ($Disk_WMI | Select-Object SerialNumber).SerialNumber -join ","
$Inventory.Disk_Partitions = "$(($Disk_WMI | Select-Object Partitions).Partitions -join ",")"
$Inventory.Disk_FirmwareVersion = ($Disk_WMI | Select-Object FirmwareRevision).FirmwareRevision -join ","
$Inventory.Disk_Status = ($Disk_WMI | Select-Object Status).Status -join ","
$Inventory.NetworkAdapter_Description = ($Network_WMI | Select-Object Description).Description -join ","
$Inventory.NetworkAdapter_MAC = ($Network_WMI | Select-Object MACAddress).MACAddress -join ","
$Inventory.NetworkAdapter_Manufacturer = ($Network_WMI | Select-Object Manufacturer).Manufacturer -join ","
$Inventory.NetworkAdapter_PNPDeviceID = ($Network_WMI | Select-Object PNPDeviceID).PNPDeviceID -join ","
$NetworkAdapterDrivers = [System.Collections.ArrayList]::new()
foreach ($NetworkAdapter_WMI in $Network_WMI)
{
$NetworkAdapterDrivers.AddRange(@($Drivers_WMI | Where-Object { $_.DeviceID -eq $NetworkAdapter_WMI.PNPDeviceID }))
}
$Inventory.NetworkAdapter_DriverVersion = ($NetworkAdapterDrivers | Select-Object DriverVersion).DriverVersion -join ","
$Inventory.NetworkAdapter_DriverDate = ($NetworkAdapterDrivers | Select-Object DriverDate).DriverDate -replace "\*","" -replace "\+","" -replace "\.","" -join ","
$Inventory.Graphics_Name = ($Graphics_WMI | Select-Object Name).Name -join ","
$Inventory.Graphics_DriverDate = ($Graphics_WMI | Select-Object DriverDate).DriverDate -join ","
$Inventory.Graphics_DriverVersion = ($Graphics_WMI | Select-Object DriverVersion).DriverVersion -join ","
$Inventory.Graphics_PNPDeviceID = ($Graphics_WMI | Select-Object PNPDeviceID).PNPDeviceID -join ","
$CompressedJSON = $Inventory | ConvertTo-Json -Compress
Start-Process -FilePath cmd.exe -ArgumentList "/c HardwareInventory$ScriptVersion $CompressedJSON" -NoNewWindow
Stop-Transcript
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment