2014-10-24 2 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 
} 

В настоящее время, это показывает использование памяти в байтах, как я могу изменить это, чтобы показать что-то вроде:Get-Process с использованием общей памяти

76,592 KB

, а также выход всё, что autosized? (Выровнен по левому краю)

ответ

11

Format-Table может показать выражения и автоматического размер столбцов, чтобы соответствовать результатам:

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

Это работает очень. Благодарю. Есть ли способ добавить запятые для цифр? – Aaron

+1

@ Аарон для части запятой вам просто нужно получить вывод числа в операцию формата ''{0: N}' -f (($ _. Group .../1KB})' – Matt

+0

Можете ли вы быть немного конкретнее, где это ввести? – Aaron

3

Просто разделите 1КБ

также может использовать 1 МБ, 1 ГБ, 1 ТБ.

Powershell очень полезен.

Эта ссылка должна помочь Powershell Tip on Byte conversion

+0

Спасибо, что полезно – Aaron

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

Очень короткое и самое главное, спасибо. – Aaron

2

Чтобы получить объем памяти на процесс, используемый на в 64-битной операционной системе Windows, выполните следующую команду:

Get-Process | Sort-Object WorkingSet64 | Select-Object Name,@{Name='WorkingSet';Expression={($_.WorkingSet64/1KB)}} | Export-Csv -Path "processes64.csv" -Delimiter "," 
Смежные вопросы