2014-10-24 13 views
5
$Processes = get-process -computername $tag1 | Group-Object -Property ProcessName 
foreach($Process in $Processes) 
{ 
    $Obj = New-Object psobject 
    $Obj | Add-Member -MemberType NoteProperty -Name Name -Value $Process.Name 
    $Obj | Add-Member -MemberType NoteProperty -Name Mem -Value ($Process.Group|Measure-Object WorkingSet -Sum).Sum 
    $Obj 
} 

Attualmente, questo mostra l'utilizzo della memoria in byte, come posso cambiare questo per mostrare qualcosa di simile:Get-Process con l'utilizzo di memoria totale

76,592 KB

e anche l'uscita tutto ciò che è autosized? (Allineato a sinistra)

risposta

11

Format-Table può mostrare espressioni e automatico delle dimensioni delle colonne per adattare i risultati:

get-process -computername $tag1 | Group-Object -Property ProcessName | 
    Format-Table Name, @{n='Mem (KB)';e={'{0:N0}' -f (($_.Group|Measure-Object WorkingSet -Sum).Sum/1KB)};a='right'} -AutoSize 
+0

Funziona molto. Grazie. C'è un modo per aggiungere virgole per le cifre? – Aaron

+1

@Aaron per la parte virgola hai solo bisogno di avere l'output del numero in un'operazione di formattazione ''{0: N}' -f (($ _. Gruppo .../1KB})' – Matt

+0

Puoi essere un poco più specifico su dove inserirlo? – Aaron

3

Basta dividere per 1 KB

anche in grado di utilizzare 1 MB, 1 GB, 1 TB.

Powershell è molto utile in questo modo.

Questo collegamento dovrebbe aiutare Powershell Tip on Byte conversion

+0

Grazie, che è utile – Aaron

3
Get-Process | Select-Object Name,@{Name='WorkingSet';Expression={($_.WorkingSet/1KB)}} 
+0

Molto breve e al punto, grazie. – Aaron

2

per ottenere la quantità di memoria per processo utilizzato su un sistema operativo Windows 64 bit, eseguire il seguente comando ...

Get-Process | Sort-Object WorkingSet64 | Select-Object Name,@{Name='WorkingSet';Expression={($_.WorkingSet64/1KB)}} | Export-Csv -Path "processes64.csv" -Delimiter "," 
Problemi correlati