Возникла потребность узнать, кто из пользователей "выедает" больше оперативки на терминальнике.
Получился вот такой скрипт.
Отказ от ответственностичтобы прикрыть себе задницу ;)
1. Я не программист
2. Приоритетом была читабельность кода, а не его лаконичность
Получился вот такой скрипт.
Отказ от ответственности
1. Я не программист
2. Приоритетом была читабельность кода, а не его лаконичность
# подсчет выделенной памяти по пользователям # полезно для териминальников # получаем таблицу соответствия user_id и UserName $owners = @{} gwmi win32_process -ErrorAction SilentlyContinue |% {$owners[$_.handle] = $_.getowner().user} # получаем список процессов и добавляем туда username $Process_List = (get-process | select cpu,pm,vm,ws,processname,Id,@{l="Owner";e={$owners[$_.id.tostring()]}}) # можно отфильтровать по конкретному приложению # в моем случае интересовало потребление памяти хромом $Process_List = ($Process_List | where {$_.Processname -eq "chrome"} ) # групируем список по Owner $Process_Group_By_Owner = ($Process_List | select cpu,pm,vm,ws,processname,Id,Owner | Group-Object -Property Owner) # добавляем сортировку, приводим к удобным единицам измерения, округляем до 1 знака после запятой $Process_Group_By_Owner | select Name, @{l="Mem"; e={($_.Group | Measure-Object -Sum WS | Select-Object -expandProperty Sum )}} | Sort-Object -Property Mem -Descending | select Name,@{l="MemGB";e={[math]::Round(($_.Mem/1GB),1)}} | ft -AutoSize