我有一个PC列表,我需要获取物理内存和可用的内存插槽数量。 我在文本文件中有一个电脑列表,并且我正在使用"获取内容"cmdlet。 这是我所拥有的:
Get-WmiObject -Class Win32_PhysicalMemory -ComputerName (Get-Content "C:TextFile.txt") | ForEach-Object {[math]::truncate($_.capacity / 1GB)}
当我运行它时,只显示内存总数。我的两个问题是:
1)如何让PC名称显示在相应的号码旁边?
和
2) 如何添加可用的总内存插槽?
谢谢!
设备定位器会告诉您插槽。
例
$memoryBySlot = Get-CimInstance -Class Win32_PhysicalMemory | Foreach-Object {
[PSCustomObject] @{
CapacityGB = $_.Capacity /1GB
DeviceLocator = $_.DeviceLocator
ComputerName = $env:COMPUTERNAME
}
}
$memoryBySlot | Out-String
$memoryBySlot | Measure-Object -Property CapacityGB -Sum | select count, sum, property
结果
CapacityGB DeviceLocator ComputerName
---------- ------------- ------------
16 DIMM1 MYMACHINE
16 DIMM2 MYMACHINE
16 DIMM3 MYMACHINE
16 DIMM4 MYMACHINE
Count Sum Property
----- --- --------
4 64 CapacityGB
你可以尝试这样的事情:
Get-Content "C:TextFile.txt" | % {$a = (Get-CimInstance -ClassName Win32_PhysicalMemory -ComputerName $_ | Measure-Object -Sum -Property Capacity).Sum / (1024*1024*1024); [PSCUStOMOBJECT]@{"Computer"=$_;"MEM"=$a}} |export-csv 'file.csv'