Форум программистов, компьютерный форум, киберфорум
Наши страницы
PowerShell
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
major94
7 / 7 / 1
Регистрация: 17.02.2012
Сообщений: 46
1

Мониторинг рабочих станций (процессы, загрузка ЦП, ОЗУ, HDD)

06.07.2015, 12:32. Просмотров 2496. Ответов 4
Метки нет (Все метки)

Доброго времени суток. Получил задание от начальника написать скрипт на PowerShell который будет собирать следующую информацию обо всех компах в домене:
  1. Список процессов (ID, Name, PT, VM(MB), PNPM(Mb), WS(Mb))
  2. Загрузка ЦПУ (В процентах)
  3. Количество доступной ОЗУ (В Мб)
  4. Загрузка HDD (загрузка диска в процентах, список разделов, и свободное пространство на разделе)

С 1-3 справился без проблем, а вот с 4 пунктов возникли вопросы, можно-ли вообще определить процент загрузки HDD в процентах?

И с 1 пунктом возник эстетический вопрос: все процессы вываливаются вот в такой форме

IDProcess : 472
Name : svchost#2
PercentProcessorTime : 88
VirtualBytes : 88612864
PoolNonpagedBytes : 56364
WorkingSet : 23908352
А нужно чтобы вылазили в таблицу
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.07.2015, 12:32
Ответы с готовыми решениями:

Администрирование удаленных рабочих станций
Добрый день.Такой вопрос начал изучать системное адмнистрирование, прочитал...

Выбор ОС для сервера и рабочих станций
Доброго всем дня. Раскажите люди кто как и что выберает. ИТ парк небольшой:...

Разные групповые политики для рабочих станций и тонких клиентов
Приветствую. Проблема: необходимо дать возможность пользователям, входящим...

соединение 3 рабочих станций
Получил задание,которое не могу выполнить с текущими знаниями,прошу вашей...

Ошибка имен рабочих станций
Добрый день коллеги появилась проблема не корректно отображаются имена...

4
greg zakharov
Покинул форум
1954 / 827 / 239
Регистрация: 07.05.2015
Сообщений: 1,658
06.07.2015, 18:34 2
Цитата Сообщение от major94
А нужно чтобы вылазили в таблицу
PowerShell
Format-Table -Auto
Цитата Сообщение от major94
...а вот с 4 пунктов возникли вопросы, можно-ли вообще определить процент загрузки HDD в процентах?
Счетчики производительности уже не в моде?
0
Garry Galler
1422 / 1148 / 422
Регистрация: 28.10.2013
Сообщений: 2,910
06.07.2015, 22:09 3
Лучший ответ Сообщение было отмечено major94 как решение

Решение

major94
Вот кое-что из моих "опытов":
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# выводим названия всех системных счетчиков
(Get-Counter -ListSet *).Paths
 
# выводим названия счетчиков для физ. дисков
(Get-Counter -ListSet Физичес*).Paths
# пример получения информации
Get-Counter "\Физический диск(*)\% активности диска"
# для конкретного диска: указывается порядковый номер диска и все разделы
get-counter "\Физический диск(1 c: b: d: e:)\% активности диска"
# вывод трех замеров с интервалами в 3 сек.
get-counter "\Физический диск(1 c: b: d: e:)\% активности диска" -SampleInterval 3 -MaxSamples 3
# тоже самое, только выводятся непосредственно цифры
(get-counter "\Физический диск(1 c: b: d: e:)\% активности диска" -SampleInterval 3 -MaxSamples 3).CounterSamples.CookedValue
 
# выводим названия счетчиков только для логических дисков
(Get-Counter -ListSet Логич*).Paths
# пример получения информации
get-counter "\Логический диск(*)\% активности диска"
# для конкретного раздела
get-counter "\Логический диск(c:)\% активности диска"
# выводим только цифры
(get-counter "\Логический диск(c:)\% активности диска").CounterSamples.CookedValue
 
 # пример вывода загрузки\активности в % раздела и свободного места на нем
[System.IO.DriveInfo]::getdrives()| ?{
 $_.DriveType -eq "Fixed"}| select `
 @{n="Name";        e={$_.name}},
 @{n="Load/%";      e={"{0:N2}" -f (get-counter ("\Логический диск(" + ($_.name -replace "\","") + ")\% активности диска")).CounterSamples.CookedValue}},
 @{n="FreeSpace/Mb";e={"{0:N2}" -f ($_.TotalFreeSpace/1mb)}}
1
val_adm
0 / 0 / 0
Регистрация: 20.10.2017
Сообщений: 3
21.02.2018, 19:07 4
Цитата Сообщение от major94 Посмотреть сообщение
Загрузка ЦПУ (В процентах)
Добрый вечер, вы общую нагрузку ЦПУ считали или отдельно каждый процесс?
0
KDE777
784 / 580 / 249
Регистрация: 22.01.2016
Сообщений: 1,586
21.02.2018, 20:44 5
Цитата Сообщение от val_adm Посмотреть сообщение
Загрузка ЦПУ (В процентах)
Может пригодится - вот кусок скрипта, который показывает средний % загрузки ЦП каждого из процессов и общую среднюю загрузку, за 10 секундный интервал.

Кликните здесь для просмотра всего текста

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
$pc = 'pc-01'
 
try {$Connection = Test-Connection -ComputerName $pc -Count 2 -EA Stop}
catch {Write-Host "NO network connection to $PC" -fo Red; break}
 
try
{
    $option = New-CimSessionOption -Protocol Dcom
    $session = New-CimSession -ComputerName $pc -SessionOption $option -EA Stop
}
catch
{
    try
    {
        $option = New-CimSessionOption -Protocol Wsman
        $session = New-CimSession -ComputerName $pc -SessionOption $option -EA Stop
    }
    Catch {Write-Host "NOT connect to CimSession on $PC" -fo Red; break}
}
 
$ComputerSystem = Get-CimInstance -ClassName Win32_ComputerSystem -CimSession $session
$CpuCores = $ComputerSystem.NumberOfLogicalProcessors
 
Write-Host 'Please wait for CPU Usage data to be collect...' -fo Yellow
 
if (Get-Counter -ListSet * -ComputerName $pc | ? Paths -Match "\\Процесс\(\*\)\"){$CounterPath = "\Процесс(*)\% загруженности процессора"}
else {$CounterPath = "\Process(*)\% Processor Time"}
 
$CPU_Usage_Counter = (Get-Counter -Counter $CounterPath -SampleInterval 1 -MaxSamples 10 -ComputerName $pc -EA SilentlyContinue).CounterSamples | ? CookedValue -ne 0 | group InstanceName
 
$CPU_Usage_Data = $CPU_Usage_Counter | select Name,@{N='CPU_Usage_%';E={[math]::Round(($_.Group | %{$_.CookedValue} | measure -Average).Average/$CpuCores,2)}}
$CPU_Usage_Data | ? Name -ne '_total' | sort 'CPU_Usage_%' -Des | ft -a
 
Write-Host "NumberOfLogicalProcessors: $CpuCores"
Write-Host "CPU Usage by All Process, %" ( [math]::Round((100 - (($CPU_Usage_Data | ? Name -eq 'idle').'CPU_Usage_%')),2) ) -fo Yellow


Код
Please wait for CPU Usage data to be collect...

Name           CPU_Usage_%
----           -----------
idle                 98,05
explorer              2,34
lsass                 1,66
zabbix_agentd         0,78
powershell_ise        0,78
mstsc                 0,78
vmtoolsd              0,78


NumberOfLogicalProcessors: 2
CPU Usage by All Process, % 1,95
0
21.02.2018, 20:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.02.2018, 20:44

Имена рабочих станций как?
Как можно определить имена рабочих станций (С#) ? Желательно как можно проще

Резервное копирование рабочих станций
Добрый день, Есть задача делать резервное копирование файлов пользователей с...

Неправильное отображение имен рабочих станций
Доброго времени суток! тема следующая - в таблицах sql, к которым привязана...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru