Bei der Frage, ob ein Server (oder auch Client) noch etwas mehr RAM vertragen kann, stellt sich oft die Frage, wieviel RAM dann aktuell in wie vielen Modulen verbaut ist und wieviele Slots noch frei sind. Natürlich gibt es dazu auch bereits grafische Werkzeuge, die das können, aber spätestens, wenn mehrere Maschinen (ggf. auch Core-Server ohne GUI) abgefragt werden sollen, kann die PowerShell ihre Stärken ausspielen. Daher habe ich ein kleines Skript gebaut, welches diese Aufgabe erfüllt:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | [Cmdletbinding()] Param( [string]$Computername = "localhost" ) cls $PysicalMemory = Get-WmiObject -class "win32_physicalmemory" -namespace "root\CIMV2" -ComputerName $Computername Write-Host "Memory Modules:" -ForegroundColor Green $PysicalMemory | Format-Table Tag,BankLabel,@{n="Capacity(GB)";e={$_.Capacity/1GB}},Manufacturer,PartNumber,Speed -AutoSize Write-Host "Total Memory:" -ForegroundColor Green Write-Host "$((($PysicalMemory).Capacity | Measure-Object -Sum).Sum/1GB)GB" $TotalSlots = ((Get-WmiObject -Class "win32_PhysicalMemoryArray" -namespace "root\CIMV2" -ComputerName $Computername).MemoryDevices | Measure-Object -Sum).Sum Write-Host "`nTotal Memory Slots:" -ForegroundColor Green Write-Host $TotalSlots $UsedSlots = (($PysicalMemory) | Measure-Object).Count Write-Host "`nUsed Memory Slots:" -ForegroundColor Green Write-Host $UsedSlots If($UsedSlots -eq $TotalSlots) { Write-Host "All memory slots are filled up, none is empty!" -ForegroundColor Yellow } |
Die Ausgabe sieht dann etwa so aus:
Auf meinem Notebook mit nur zwei RAM-Slots (beide belegt) kommt zusätzlich noch eine kleine “Warnung”:
Ihr könnt das Skript auch hier herunterladen:
https://gallery.technet.microsoft.com/scriptcenter/Get-Memory-RAM-configuratio-35dda12e