Skip to content

Instantly share code, notes, and snippets.

@twobob
Created August 11, 2023 12:46
Show Gist options
  • Save twobob/1e3b4a0ea2f243bef2bfa0a3270ad6b7 to your computer and use it in GitHub Desktop.
Save twobob/1e3b4a0ea2f243bef2bfa0a3270ad6b7 to your computer and use it in GitHub Desktop.
poor mans lscpu via powershell on windows
$processor = Get-WmiObject Win32_Processor
$computerSystem = Get-WmiObject Win32_ComputerSystem
Write-Output "Processor Information"
Write-Output "---------------------"
Write-Output ("Architecture:".PadRight(30) + "$($processor.Architecture)")
Write-Output ("CPU op-mode(s):".PadRight(30) + "$($processor.CpuStatus -join ', ')")
Write-Output ("Byte Order:".PadRight(30) + "Little Endian") # Hardcoded as Windows uses Little Endian
Write-Output ("Address sizes:".PadRight(30) + "$($processor.AddressWidth) bits physical, $($processor.AddressWidth) bits virtual")
Write-Output ("CPU(s):".PadRight(30) + "$($processor.NumberOfCores)")
Write-Output ("On-line CPU(s) list:".PadRight(30) + "$($processor.DeviceID)")
Write-Output ("Thread(s) per core:".PadRight(30) + "$($processor.ThreadCount / $processor.NumberOfCores)")
Write-Output ("Core(s) per socket:".PadRight(30) + "$($processor.NumberOfCores / $computerSystem.NumberOfProcessors)")
Write-Output ("Socket(s):".PadRight(30) + "$($computerSystem.NumberOfProcessors)") # TODO MAKE THIS RIGHT
Write-Output ("NUMA node(s):".PadRight(30) + "N/A") # If the info is not available
Write-Output ("Vendor ID:".PadRight(30) + "$($processor.Manufacturer)")
Write-Output ("CPU family:".PadRight(30) + "$($processor.Family)")
Write-Output ("Model:".PadRight(30) + "$($processor.ProcessorType)")
Write-Output ("Model name:".PadRight(30) + "$($processor.Name)")
Write-Output ("Stepping:".PadRight(30) + "$($processor.Revision)")
Write-Output ("CPU MHz:".PadRight(30) + "$($processor.MaxClockSpeed / 1000) GHz")
Write-Output ("BogoMIPS:".PadRight(30) + $($processor.MaxClockSpeed / 2))
Write-Output ("Virtualization:".PadRight(30) + "$($processor.VirtualizationFirmwareEnabled)")
Write-Output ("Hypervisor vendor:".PadRight(30) + "N/A")
Write-Output ("Virtualization type:".PadRight(30) + "$($processor.VirtualizationFirmwareEnabled)")
Write-Output ("L1d cache:".PadRight(30) + "$($processor.L2CacheSize) KB")
Write-Output ("L1i cache:".PadRight(30) + "$($processor.L2CacheSize) KB")
Write-Output ("L2 cache:".PadRight(30) + "$($processor.L3CacheSize) KB")
Write-Output ("L3 cache:".PadRight(30) + "$($processor.L3CacheSize / 1024) MB")
Write-Output ("NUMA node0 CPU(s):".PadRight(30) + "$($processor.NumberOfLogicalProcessors)")
# Vulnerability information
Write-Output ("Vulnerability Itlb multihit:".PadRight(40) + "$($processor.SpeculationControlStatus -like '*ITLB_MultiHit*')")
Write-Output ("Vulnerability L1tf:".PadRight(40) + "$($processor.SpeculationControlStatus -like '*L1TF*')")
Write-Output ("Vulnerability Mds:".PadRight(40) + "$($processor.SpeculationControlStatus -like '*MDS*')")
Write-Output ("Vulnerability Meltdown:".PadRight(40) + "$($processor.SpeculationControlStatus -like '*Meltdown*')")
Write-Output ("Vulnerability Spec store bypass:".PadRight(40) + "$($processor.SpeculationControlStatus -like '*Spec_Store_Bypass*')")
Write-Output ("Vulnerability Spectre v1:".PadRight(40) + "$($processor.SpeculationControlStatus -like '*SpectreV1*')")
Write-Output ("Vulnerability Spectre v2:".PadRight(40) + "$($processor.SpeculationControlStatus -like '*SpectreV2*')")
Write-Output ("Vulnerability Srbds:".PadRight(40) + "$($processor.SpeculationControlStatus -like '*SRBDS*')")
Write-Output ("Vulnerability Tsx async abort:".PadRight(40) + "$($processor.SpeculationControlStatus -like '*TSXAsyncAbort*')")
Write-Output "`n"
@gvanem
Copy link

gvanem commented Oct 14, 2023

I tried this but it fails with The term 'Get-WmiObject' is not recognized ....
lscpu-error

How do I use this script? Please help.

@twobob
Copy link
Author

twobob commented Oct 15, 2023

has to be run in a powershell - not cross platform version. Its deprecated on there.

Check exectution policy I guess too. but eh you ran it.Get-CimInstance may be what you need

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment