Hello,
I have script which scans local network and get some informations from hosts. For this I use below code:
$results = Invoke-Command -Session $sessions -ScriptBlock { if (($PSVersionTable.PSVersion.Major) -ge 5) { $Win32_ComputerSystem = Get-CimInstance -ClassName Win32_ComputerSystem -property * $Win32_Processor = Get-CimInstance -ClassName Win32_Processor -property * $Win32_SystemEnclosure = Get-CimInstance -ClassName Win32_SystemEnclosure -property * $Win32_DiskDrive = Get-CimInstance -ClassName Win32_DiskDrive -property * [pscustomobject]@{ ScanDate = (Get-Date -DisplayHint Date) #Get-Date -Format {dd.MM.yyyy} PhysicalHostname = ([System.Net.Dns]::GetHostByName($env:computerName)).HOSTNAME Manufacturer = $Win32_ComputerSystem.Manufacturer Model = $Win32_ComputerSystem.Model ComputerSerialNumber = $Win32_SystemEnclosure.SerialNumber ProcessorName = $Win32_Processor.Name; #Get-Ciminstance -Query 'SELECT Name FROM Win32_Processor' RAM = $Win32_ComputerSystem.TotalPhysicalMemory DiskDrive = $Win32_DiskDrive.Size; HDDPartitions = (Get-CimInstance -ClassName Win32_LogicalDisk -Filter "DriveType=3").Size; OS = (Get-CimInstance Win32_OperatingSystem -Property *).Name.Split("|") | Select-Object -First 1; Annotation = ($PSVersionTable.PSVersion.Major) } } # Code for PowerShell with version less than 5 else { $Win32_ComputerSystem = Get-WmiObject -Class Win32_ComputerSystem $Win32_Processor = Get-WmiObject -Class Win32_Processor $Win32_DiskDrive = Get-WmiObject -Class Win32_DiskDrive [pscustomobject]@{ ScanDate = (Get-Date -DisplayHint Date); PhysicalHostname = ([System.Net.Dns]::GetHostByName($env:computerName)).HOSTNAME Manufacturer = $Win32_ComputerSystem.Manufacturer; Model = $Win32_ComputerSystem.Model; ComputerSerialNumber = $NULL; ProcessorName = $Win32_Processor.Name; RAM = $Win32_ComputerSystem.TotalPhysicalMemory; DiskDrive = $Win32_DiskDrive.Size; HDDPartitions = $NULL; OS = ".....some os....."; Annotation = ($PSVersionTable.PSVersion.Major); } } }I wrote two sections, one for PowerShell greater than than 5, and second section for older versions of PowerShell (for example ver 2 in Windows 7). This is because version older than 5 cannot use "Get-CimInstance" command.
@{ScanDate=20.10.2020 11:55:31; PhysicalHostname=5039-lukbak-k.ad.ms.gov.pl; Manufacturer=Hewlett-Packard; Model=HP Compaq Pro 6300 SFF; ComputerSerialNumber=CZC3361LCD; ProcessorName=Intel(R) Core(TM) i3-3225 CPU @ 3.30GHz; RAM=4162904064; DiskDrive=500105249280; HDDPartitions=499429404672; OS=Microsoft Windows 10 Pro; Annotation=5; PSComputerName=some_computer_name; RunspaceId=....; PSShowComputerName=True;}And when is scanned computer with Win 7 and PS 2 it returns object System.Collections.Hashtable.
Why is that?
Best Regadrs
Daniel
Please look at screen below: