Scripts/Get-PCPhysicalMemory.ps1
Function Get-PCPhysicalMemory { <# .SYNOPSIS Get memory information .DESCRIPTION Get memory information .PARAMETER ComputerName The target computer name .EXAMPLE Get-PCPhysicalMemory -ComputerName LabPC2024 .NOTES N/A .LINK N/A #> [CmdletBinding ()] Param ( [Parameter (Mandatory = $True, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True, HelpMessage = 'Enter computer name' ) ] [String[]]$ComputerName ) BEGIN { $MemoryFormFactor = @{ '0' = 'Unknown' '1' = 'Other' '2' = 'SIP' '3' = 'DIP' '4' = 'ZIP' '5' = 'SOJ' '6' = 'Proprietary' '7' = 'SIMM' '8' = 'DIMM' '9' = 'TSOP' '10' = 'PGA' '11' = 'RIMM' '12' = 'SODIMM' '13' = 'SRIMM' '14' = 'SMD' '15' = 'SSMP' '16' = 'QFP' '17' = 'TQFP' '18' = 'SOIC' '19' = 'LCC' '20' = 'PLCC' '21' = 'BGA' '22' = 'FPBGA' '23' = 'LGA' } $MemoryType = @{ '0' = 'Unknown' '1' = 'Other' '2' = 'DRAM' '3' = 'Synchronous DRAM' '4' = 'Cache DRAM' '5' = 'EDO' '6' = 'EDRAM' '7' = 'VRAM' '8' = 'SRAM' '9' = 'RAM' '10' = 'ROM' '11' = 'Flash' '12' = 'EEPROM' '13' = 'FEPROM' '14' = 'EPROM' '15' = 'CDRAM' '16' = '3DRAM' '17' = 'SDRAM' '18' = 'SGRAM' '19' = 'RDRAM' '20' = 'DDR' '21' = 'DDR2' '22' = 'DDR2 FB-DIMM' '24' = 'DDR3' '25' = 'FBD2' '26' = 'DDR4' } $MemoryTypeDetail = @{ '1' = 'Reserved' '2' = 'Other' '4' = 'Unknown' '8' = 'Fast-paged' '16' = 'Static column' '32' = 'Pseudo-static' '64' = 'RAMBUS' '128' = 'Synchronous' '256' = 'CMOS' '512' = 'EDO' '1024' = 'Window DRAM' '2048' = 'Cache DRAM' '4096' = 'Non-volatile' } Function Show-Output ($Computer, $Values, $Status) { If ($Values.Capacity) { $Capacity = "$($Values.Capacity / 1GB)$(' GB')" } [PSCustomObject]@{ ComputerName = $Computer Description = $Values.Tag BankLabel = $Values.BankLabel Capacity = $Capacity ConfiguredClockSpeed = $Values.ConfiguredClockSpeed ConfiguredVoltage = $Values.ConfiguredVoltage MinVoltage = $Values.MinVoltage MaxVoltage = $Values.MaxVoltage InterleaveDataDepth = $Values.InterleaveDataDepth InterleavePosition = $Values.InterleavePosition DataWidth = $Values.DataWidth TotalWidth = $Values.TotalWidth DeviceLocator = $Values.DeviceLocator FormFactor = $MemoryFormFactor["$($Values.FormFactor)"] MemoryType = $MemoryType["$($Values.MemoryType)"] TypeDetail = $MemoryTypeDetail["$($Values.TypeDetail)"] Speed = $Values.Speed Manufacturer = $Values.Manufacturer PartNumber = $Values.PartNumber SerialNumber = $Values.SerialNumber Status = $Status } } } PROCESS { ForEach ($Computer In $ComputerName) { If (Test-Connection -ComputerName $Computer -Count 1 -Quiet) { Try { $Data = Get-WmiObject Win32_PhysicalMemory -ComputerName $Computer | Select-Object * ForEach ($Item In $Data) { Show-Output $Computer.ToUpper() $Item 'Ok' } } Catch { Show-Output $Computer.ToUpper() $Null $PSItem.Exception.Message } } Else { Show-Output $Computer.ToUpper() $Null 'Unreachable' } } } END {} } |