(view source code of powershellcomputerclass.ps as plain text)
class Computer
{
static [string]$Version = '1.00'
static [string]$Copyrights = 'Rob van der Woude'
static [string]$ProductPage = 'https://www.robvanderwoude.com/powershellcomputerclass.php'
static [string]$Help = @"
Computer class, Version {0}
Make basic hardware infomation available in a class
Copyrights {1} {2}
{3}
How to use:
===========
Create an instance of the Computer class using the following command:
`$computer = [Computer]::New( )
After gathering hardware information for a couple of seconds, `$computer will have the information available through its properties and methods:
--------- --------- ------------------------------- ----------
Property: DataType: Information on this computer's: WMI class:
--------- --------- ------------------------------- ----------
Name System.String computer name
IPAddress System.String local IP address
BIOS System.Object BIOS root/CIMV2/Win32_BIOS
CDROM System.Object CD-ROM drive(s) root/CIMV2/Win32_CDROMDrive
CPU System.Object processor(s) root/CIMV2/Win32_Processor
HDD System.Object harddisk(s) root/Microsoft/Windows/Storage/MSFT_PhysicalDisk
Keyboard System.Object keyboard(s) root/CIMV2/Win32_Keyboard
MainBoard System.Object main board root/CIMV2/Win32_BaseBoard
Memory System.Object memory root/CIMV2/Win32_PhysicalMemory
Monitor System.Object monitor(s) root/WMI/WmiMonitorID
Mouse System.Object mouse (or mice) root/CIMV2/Win32_PointingDevice
NIC System.Object physical network adapter(s) root/CIMV2/Win32_NetworkAdapter
Printers System.Object physical local printer(s) root/CIMV2/Win32_Printer
Slots System.Object system slots root/CIMV2/Win32_SystemSlot
Sound System.Object sound card(s) root/CIMV2/Win32_SoundDevice
USB System.Object USB controller(s) root/CIMV2/Win32_USBController
Video System.Object video card(s) root/CIMV2/Win32_VideoController
Windows System.Object Windows version root/CIMV2/Win32_OperatingSystem
WinSat System.Object WinSat system scores root/CIMV2/Win32_WinSAT
--------- --------- ---------- ----------
Property: DataType: Number of: WMI class:
--------- --------- ---------- ----------
_AGP System.Int32 AGP slots root/CIMV2/Win32_SystemSlot
_AGP2X System.Int32 AGP2X slots root/CIMV2/Win32_SystemSlot
_AGP4X System.Int32 AGP4X slots root/CIMV2/Win32_SystemSlot
_AGP8X System.Int32 AGP8X slots root/CIMV2/Win32_SystemSlot
_Cardbus System.Int32 Cardbus slots root/CIMV2/Win32_SystemSlot
_CDROMs System.Int32 CD-ROM drives root/CIMV2/Win32_CDROMDrive
_COMPorts System.Int32 serial ports root/CIMV2/Win32_SerialPort
_EISA System.Int32 EISA slots root/CIMV2/Win32_SystemSlot
_HDDs System.Int32 harddisk drives root/Microsoft/Windows/Storage/MSFT_PhysicalDisk
_ISA System.Int32 ISA slots root/CIMV2/Win32_SystemSlot
_LPTPorts System.Int32 parallel ports root/CIMV2/Win32_ParallelPort
_MemoryGB System.Int32 GigaBytes of memory root/CIMV2/Win32_PhysicalMemory
_MemoryModules System.Int32 memory modules root/CIMV2/Win32_PhysicalMemory
_MemorySockets System.Int32 memory sockets root/CIMV2/Win32_PhysicalMemoryArray
_Monitors System.Int32 monitors root/WMI/WmiMonitorID
_PCI System.Int32 PCI slots root/CIMV2/Win32_SystemSlot
_PCIE System.Int32 PCI-E slots root/CIMV2/Win32_SystemSlot
_PCIX System.Int32 PCI-X slots root/CIMV2/Win32_SystemSlot
_PCMCIA System.Int32 PCMCIA slots root/CIMV2/Win32_SystemSlot
_USB2 System.Int32 USB controllers (except USB 3) root/CIMV2/Win32_USBController
_USB3 System.Int32 USB 3 controllers root/CIMV2/Win32_USBController
_VESA System.Int32 VESA slots root/CIMV2/Win32_SystemSlot
Static Members:
===============
----------------------- ------------ ------
Properties and Methods: Description: Value:
----------------------- ------------ ------
[Computer]::Version This class' version {0}
[Computer]::Copyrights Author's name {2}
[Computer]::ProductPage This class' webpage {3}
[Computer]::Help This help text
[Computer]::OpenProductPage( ) Open this class' webpage
[Computer]::New( ) Create new instance of this class
"@ -f [Computer]::Version, [char]0x00A9, [Computer]::Copyrights, [Computer]::ProductPage
static [void]OpenProductPage( )
{
Start-Process -FilePath $( [Computer]::ProductPage )
}
[string]$Name = $Env:ComputerName
[string]$IPAddress = $( [System.Net.Dns]::Resolve( $Env:ComputerName ).AddressList.IPAddressToString )
[object]$BIOS
[object]$CDROM
[object]$CPU
[object]$HDD
[object]$Keyboard
[object]$MainBoard
[object]$Memory
[object]$Monitor
[object]$Mouse
[object]$NIC
[object]$Printers
[object]$Slots
[object]$Sound
[object]$USB
[object]$Video
[object]$Windows
[object]$WinSat
[int]$_AGP
[int]$_AGP2X
[int]$_AGP4X
[int]$_AGP8X
[int]$_Cardbus
[int]$_CDROMs
[int]$_COMPorts
[int]$_EISA
[int]$_HDDs
[int]$_ISA
[int]$_LPTPorts
[int]$_MemoryGB
[int]$_MemoryModules
[int]$_MemorySockets
[int]$_Monitors
[int]$_PCI
[int]$_PCIE
[int]$_PCIX
[int]$_PCMCIA
[int]$_USB2
[int]$_USB3
[int]$_VESA
Computer( )
{
$this.BIOS = $( Get-CimInstance -ClassName Win32_BIOS )
$this.CDROM = $( Get-CimInstance -ClassName Win32_CDROMDrive | Where-Object { $_.Name -notmatch 'virtual' } )
$this.CPU = $( Get-CimInstance -ClassName Win32_Processor )
$this.HDD = $( Get-CimInstance -ClassName MSFT_PhysicalDisk -Namespace root/Microsoft/Windows/Storage )
$this.Keyboard = $( Get-CimInstance -ClassName Win32_Keyboard )
$this.MainBoard = $( Get-CimInstance -ClassName Win32_BaseBoard )
$this.Memory = $( Get-CimInstance -ClassName Win32_PhysicalMemory )
$this.Monitor = $( Get-CimInstance -ClassName WmiMonitorID -Namespace root/WMI )
$this.Mouse = $( Get-CimInstance -Classname Win32_PointingDevice )
$this.NIC = $( Get-CimInstance -ClassName Win32_NetworkAdapter | Where-Object { $_.Speed -gt 0 } ) # physical adapters only
$this.Printers = $( Get-CimInstance -ClassName Win32_Printer | Where-Object { $_.PrintProcessor -ne 'winprint' -and $_.Local } ) # physical local printers only
$this.Slots = $( Get-CimInstance -ClassName Win32_SystemSlot )
$this.Sound = $( Get-CimInstance -ClassName Win32_SoundDevice | Where-Object { $_.Manufacturer -ne 'Microsoft' } ) # physical soundcards only
$this.USB = $( Get-CimInstance -ClassName Win32_USBController )
$this.Video = $( Get-CimInstance -ClassName Win32_VideoController )
$this.Windows = $( Get-CimInstance -ClassName Win32_OperatingSystem )
$this.WinSat = $( Get-CimInstance -ClassName Win32_WinSAT -Filter "TimeTaken='MostRecentAssessment'" )
$this._AGP = $( $this.Slots | Where-Object { $_.ConnectorType -eq 73 } | Measure-Object ).Count
$this._AGP2X = $( $this.Slots | Where-Object { $_.ConnectorType -eq 81 } | Measure-Object ).Count
$this._AGP4X = $( $this.Slots | Where-Object { $_.ConnectorType -eq 82 } | Measure-Object ).Count
$this._AGP8X = $( $this.Slots | Where-Object { $_.ConnectorType -eq 99 } | Measure-Object ).Count
$this._Cardbus = $( $this.Slots | Where-Object { $_.ConnectorType -eq 52 } | Measure-Object ).Count
$this._CDROMs = $( $this.CDROM | Measure-Object ).Count
$this._COMPorts = $( Get-CimInstance -ClassName Win32_SerialPort | Measure-Object ).Count
$this._EISA = $( $this.Slots | Where-Object { $_.ConnectorType -eq 45 } | Measure-Object ).Count
$this._HDDs = $( $this.HDD | Measure-Object ).Count
$this._ISA = $( $this.Slots | Where-Object { $_.ConnectorType -eq 44 } | Measure-Object ).Count
$this._LPTPorts = $( Get-CimInstance -ClassName Win32_ParallelPort | Measure-Object ).Count
$_Memory = 0
$this.Memory.Capacity | ForEach-Object { $_Memory += $_ }
$this._MemoryGB = $( $_Memory / 1GB )
$this._MemoryModules = $( $this.Memory | Measure-Object ).Count
$this._MemorySockets = $( Get-CimInstance -ClassName Win32_PhysicalMemoryArray ).MemoryDevices
$this._Monitors = $( $this.Monitor | Measure-Object ).Count
$this._PCMCIA = $( $this.Slots | Where-Object { $_.ConnectorType -gt 46 -and $_.ConnectorType -lt 51 } | Measure-Object ).Count
$this._PCI = $( $this.Slots | Where-Object { $_.ConnectorType -eq 43 -or $_.ConnectorType -eq 80 } | Measure-Object ).Count
$this._PCIE = $( $this.Slots | Where-Object { $_.ConnectorType -eq 100 } | Measure-Object ).Count
$this._PCIX = $( $this.Slots | Where-Object { $_.ConnectorType -eq 88 } | Measure-Object ).Count
$this._USB3 = $( $this.USB | Where-Object { $_.Name -match 'USB ?3' } | Measure-Object ).Count # not very reliable, as this relies on the description
$this._USB2 = $( $this.USB | Measure-Object ).Count - $this._USB3 # total number of USB controllers - number of USB 3 controllers
$this._VESA = $( $this.Slots | Where-Object { $_.ConnectorType -eq 46 } | Measure-Object ).Count
}
}
page last modified: 2024-04-16; loaded in 0.0084 seconds