Presta atención ya que en esta reseña vas a hallar la respuesta que buscas.
También puede usar el cmdlet Get-Counter (PowerShell 2.0):
Get-Counter 'MemoryAvailable MBytes'
Get-Counter 'Processor(_Total)% Processor Time'
Para obtener una lista de contadores de memoria:
Get-Counter -ListSet *memory* | Select-Object -ExpandProperty Counter
Get-WmiObject Win32_Processor | Select LoadPercentage | Format-List
Esto le da carga de CPU.
Get-WmiObject Win32_Processor | Measure-Object -Property LoadPercentage -Average | Select Average
Uso el siguiente fragmento de código de PowerShell para obtener el uso de la CPU para sistemas locales o remotos:
Get-Counter -ComputerName localhost 'Process(*)% Processor Time' | Select-Object -ExpandProperty countersamples | Select-Object -Property instancename, cookedvalue| Sort-Object -Property cookedvalue -Descending| Select-Object -First 20| ft InstanceName,@L='CPU';E=($_.Cookedvalue/100).toString('P') -AutoSize
Mismo script pero formateado con continuación de línea:
Get-Counter -ComputerName localhost 'Process(*)% Processor Time' `
| Select-Object -ExpandProperty countersamples `
| Select-Object -Property instancename, cookedvalue `
| Sort-Object -Property cookedvalue -Descending | Select-Object -First 20 `
| ft InstanceName,@L='CPU';E=($_.Cookedvalue/100).toString('P') -AutoSize
En un sistema de 4 núcleos, devolverá resultados que se ven así:
InstanceName CPU
------------ ---
_total 399.61 %
idle 314.75 %
system 26.23 %
services 24.69 %
setpoint 15.43 %
dwm 3.09 %
policy.client.invoker 3.09 %
imobilityservice 1.54 %
mcshield 1.54 %
hipsvc 1.54 %
svchost 1.54 %
stacsv64 1.54 %
wmiprvse 1.54 %
chrome 1.54 %
dbgsvc 1.54 %
sqlservr 0.00 %
wlidsvc 0.00 %
iastordatamgrsvc 0.00 %
intelmefwservice 0.00 %
lms 0.00 %
El argumento ComputerName aceptará una lista de servidores, por lo que con un poco de formato adicional puede generar una lista de los principales procesos en cada servidor. Algo como:
$psstats = Get-Counter -ComputerName utdev1,utdev2,utdev3 'Process(*)% Processor Time' -ErrorAction SilentlyContinue | Select-Object -ExpandProperty countersamples | %New-Object PSObject -Property @ComputerName=$_.Path.Split('')[2];Process=$_.instancename;CPUPct=("0,4:N0%" -f $_.Cookedvalue);CookedValue=$_.CookedValue | ?$_.CookedValue -gt 0| Sort-Object @E='ComputerName'; A=$true ,@E='CookedValue'; D=$true ,@E='Process'; A=$true
$psstats | ft @E="0,25" -f $_.Process;L="ProcessName",CPUPct -AutoSize -GroupBy ComputerName -HideTableHeaders
Lo que daría como resultado una variable $psstats con los datos sin procesar y la siguiente pantalla:
ComputerName: utdev1
_total 397%
idle 358%
3mws 28%
webcrs 10%
ComputerName: utdev2
_total 400%
idle 248%
cpfs 42%
cpfs 36%
cpfs 34%
svchost 21%
services 19%
ComputerName: utdev3
_total 200%
idle 200%
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)