PowerShell: Arbeitsspeicherverbrauch eines Prozesses remote auslesen (WMI)

Um herauszufinden wie viel Arbeitsspeicher ein bestimmter Prozess auf einem Rechner benötigt, kann man sich WMI-Abfragen bedienen. Das folgende Script sucht Rechner mit einem bestimmten Namen im Active Directory und liest dann Arbeitsspeicher des Rechners und des Prozesses aus:

$Procname = „outlook“
$Namefilter = „CLT“
$dnssuffix = „.frankysweb.local“

#——————————————————————
$computers = Get-ADComputer -Filter * | where {$_.name -match „$Namefilter“} | select name
$anzname = „$procname“+“inMB“

$results =@()
foreach ($computer in $computers)
{
$pc = $computer.name
$fqdn = „$pc“ + „$dnssuffix“
$av = test-connection $fqdn -count 1 -erroraction silentlycontinue
if ($av)
{
$ramkb = Get-WmiObject Win32_ComputerSystem -computer $fqdn
$ramkb = $ramkb.TotalPhysicalMemory
$ramgb = $ramkb / 1024 / 1024 / 1024
$ramgb = [decimal]::round($ramgb)

$proclist = get-wmiobject Win32_PerfRawData_PerfProc_Process -computer $fqdn | where {$_.name -match „$procname“}
if ($proclist)
{
$procram = $proclist.WorkingSetPrivate
$procrammb = $procram / 1024 / 1024
$procrammb = [decimal]::round($procrammb)
}
else
{
$procrammb=“0″
}

$results += new-object PSObject -property @{Computer=“$pc“;RAMinGB=“$ramgb“;$anzname=“$procrammb“;FQDN=“$fqdn“}
}
}
$results

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.