Combining multiple WMI query into a PowerShell object


If you red some of my previous article on WMI, you probably said yourself “That’s nice, I can make a great report with it, but I need to output all of those informations on a single line for each computer.”, that’s totally possible. You need to create a custom PowerShell object, and store all of the needed properties in it. Continue reading

Get sizing informations on a remote computer with PowerShell


Today, we want to retrieve the number of logical processors, the amount of ram and the number of ram physical slot used. To achieve our goal, we’ll use WMI :

First, we use the “Win32_ComputerSystem” :

Get-WmiObject Win32_ComputerSystem -ComputerName SQL


If you pipe that in a “Get-Member“, you’ll find more properties, such as those :


If you want the total amount of ram in a readable form, you’ll use a dictionary :


Then, the “Win32_PhysicalMemory” :

Get-WmiObject Win32_physicalmemory -ComputerName SQL

If you pay attention, you’ll notice that this query returned several objects. Indeed, you have one object by used slot, so, you just need to count them to know how many slot are used:


You can have some informations about each used slots such as :


Get CPU informations on a remote computer with PowerShell


To get CPU informations, you need to use the “Win32_processor” WMI class like that :


If you want more informations, you can use :

Get-WmiObject -Class Win32_processor -ComputerName SQL | select *

This will force the WMI query to retrieve a lot more informations about the remote machine’s CPU.

You also select a few useful properties, with multiple computers :

 Get-WmiObject -Class Win32_processor -ComputerName SQL,WSUS,SOFSR2Node1,SOFSR2Node2 | select SystemName,Name,CurrentClockSpeed | Format-Table -AutoSize


Get bios informations on a remote computer with PowerShell


You can get some BIOS informations with that WMI call:

Get-WmiObject -Class Win32_Bios -ComputerName SOFSR2Node2


You can pipe that to “Get-Member” or use MSDN to get all available properties.

Hereunder an example with some useful properties :

Get-WmiObject -Class Win32_Bios -ComputerName SOFSR2Node2,2k12r2 | Select-Object Manufacturer,Version,SerialNumber,PSComputerName,Description