Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
As part of this blog series we are sharing PowerShell snippets for a few Computer Management tasks. In this post we will be going over the samples for Computer Hardware management.
The Visual Basic samples for Computer Hardware Management are at: https://msdn.microsoft.com/en-us/library/aa394587(v=vs.85).aspx
The corresponding PowerShell samples are below:
1. Determine how much free memory a computer has:
PS:> # Get Instance of Win32_OperatingSystem PS:> $os = Get-CimInstance –ClassName Win32_OperatingSystem –Namespace root/cimv2 PS:> # Look for FreePhysicalMemory property PS:> $os | Select FreePhysicalMemory |
2. Determine whether a computer has a DVD drive:
# Look for instances of Win32_CDROMDrive $insts = Get-CimInstance –ClassName Win32_CDROMDrive –Namespace root/cimv2 # Loop through them and print DeviceID, Description and Name foreach($inst in $insts) { $inst | Select Name, DeviceID, Description } |
3. Determine how much RAM is installed in a computer:
PS:> # Get instance of Win32_ComputerSystem PS:> $inst = Get-CimInstance –ClassName Win32_ComputerSystem PS:> # Print Name of the System and the Total Physical Memory PS:> $inst | Select Name, TotalPhysicalMemory |
4. Determine if a computer has more than one processor:
PS:> # Get instance of Win32_ComputerSystem PS:> $inst = Get-CimInstance –ClassName Win32_ComputerSystem –Namespace root/cimv2 PS:> # Print Name of the system and Number of Processors PS:> $inst | Select Name, NumberOfProcessors |
5. Determine whether a computer has a PCMCIA slot:
# Use the Win32_PCMCIAController class and check the value of the Count property. # If Count is 0, then the computer has no PCMCIA slots. $insts = Get-CimInstance –ClassName Win32_PCMCIAController –Namespace root/cimv2 if($insts -ne $null) { $count = $insts.Count if($count -eq $null) { $count = 1 } Write-Host "Number of PCMCIA slots: $count" } else { Write-Host "Number of PCMCIA slots: 0" } |
6. Identify devices that are not working (those marked with an exclamation point icon in Device Manager)?
# Use the Win32_PnPEntity class # Use the following clause in your WQL query. WHERE ConfigManagerErrorCode <> 0 $query = "Select * from Win32_PnPEntity WHERE ConfigManagerErrorCode <> 0" $insts = Get-CimInstance -Query $query # Loop through all such devices and print their information. foreach($inst in $insts) { $inst | Format-Table -Property @("ClassGuid", "Description", "DeviceID", "Manufacturer", "Name", "PNPDeviceID", "Service") } |
7. Determine the properties of the mouse used on computer:
# Use the Win32_PointingDevice class. # This returns the properties of all pointing devices, not just mouse devices. $insts = Get-CimInstance –ClassName Win32_PointingDevice # Loop though instances of Win32_PointingDevice and print the properties. foreach($inst in $insts) { $inst | Format-Table –Property @(“Description", “DeviceID", “DeviceInterface", “DoubleSpeedThreshold", “Handedness", “HardwareType", “InfFileName", “InfSection", “Manufacturer", “Name", “NumberOfButtons", “PNPDeviceID", “PointingType", “QuadSpeedThreshold", “Resolution", “SampleRate", “Synch") } |
8. Determine the speed of a processor installed in a computer:
# Use the Win32_Processor class and check the value of the MaxClockSpeed property. $insts = Get-CimInstance –ClassName Win32_Processor –Namespace root/cimv2 foreach($inst in $insts) { $inst | Select ProcessorId, MaxClockSpeed } |
9. Determine whether a computer is a tower, a mini-tower, a laptop, and so on:
# Use the Win32_SystemEnclosure class and check the value of the ChassisType property. $colChassis = Get-CimInstance –ClassName Win32_SystemEnclosure –Namespace root/cimv2 # Loop though the collection of chassis foreach($chassis in $colChassis) { # Look though the Chassis Types foreach($item in $chassis.ChassisTypes) { Write-Host "Chassis Type: $item" } } |
10. Get the serial number and asset tag of a computer:
# Use the Win32_SystemEnclosure class, and the properties SerialNumber and SMBIOSAssetTag. $sytemEnclosures = Get-CimInstance –ClassName Win32_SystemEnclosure $sytemEnclosureCollection = @() $sytemEnclosureCollection += $sytemEnclosures foreach($systemEnclosure in $sytemEnclosureCollection) { $systemEnclosure | Select PartNumber, SerialNumber, SMBIOSAssetTag } |
11. Determine what kind of device is plugged into a USB port:
# Use the Win32_USBHub class and check the Description property. # This property may have a value such as "Mass Storage Device" or "Printing Support". $items = Get-CimInstance –ClassName Win32_USBHub –Namespace root/cimv2 foreach($item in $items) { $item | Select DeviceID, PNPDeviceID, Description } |
12. Determine how many tape drives are installed on a computer:
# Use the class Win32_TapeDrive class and then count the number of instances received. # If Count = 0, then no tape drives are installed on the computer. $insts = Get-CimInstance –ClassName Win32_TapeDrive $count = 0 if($insts -ne $null) { $count = $insts.Count if($count -eq $null) { $count = 1 } } Write-Host "Number of tape drives = $count" |
We will be covering other computer management scenarios in our future posts. If you have any questions please feel free to send them to us.
Important links:
- The complete list of tasks we will be covering in this series is at: https://msdn.microsoft.com/en-us/library/aa394585(v=vs.85).aspx
- Link to previous post(s):
Thanks
Vaibhav Chugh [MSFT]
Standards Based Management
Comments
- Anonymous
February 11, 2014
Good informative read, Thank you so much for nice information…<a href=”www.apvision.in/5-mac-desktops-laptops”>imac price in India</a>