PowerShell позволяет удалённо мониторить компьютеры в сети без необходимости физического доступа. С его помощью можно собирать информацию о загруженности процессора, оперативной памяти, состоянии дисков, работающих процессах и многом другом.
1️⃣ Проверка доступности компьютера в сети. Перед началом работы проверяем, онлайн ли машина:
Test-Connection -ComputerName PC-001 -Count 2
Аналог ping, но с возможностью использования в скриптах. Если нужно проверить группу компьютеров:
$computers = @("PC-001", "PC-002", "PC-003")
$computers | ForEach-Object { Test-Connection -ComputerName $_ -Count 1 -Quiet }
Вернёт $true/$false для каждого устройства.
2️⃣ Мониторинг загрузки процессора и памяти. Получить текущую нагрузку процессора на удалённом ПК можно так:
Get-WmiObject Win32_Processor -ComputerName PC-001 | Select-Object LoadPercentage
Для оперативной памяти:
Get-WmiObject Win32_OperatingSystem -ComputerName PC-001 |
Select-Object TotalVisibleMemorySize, FreePhysicalMemory
Вернёт общий объём RAM и количество свободной памяти.
3️⃣ Проверка состояния дисков.
Get-WmiObject Win32_LogicalDisk -ComputerName PC-001 -Filter "DriveType=3" |
Select-Object DeviceID, VolumeName, @{Name="FreeSpace(GB)";Expression={$_.FreeSpace/1GB -as [int]}}
Покажет свободное место в ГБ для каждого логического диска.
4️⃣ Просмотр работающих процессов. Для диагностики зависаний можно посмотреть, какие процессы загружают систему:
Get-Process -ComputerName PC-001 | Sort-Object CPU -Descending | Select-Object -First 10
Топ-10 процессов по загрузке CPU.
Завершить зависший процесс на удалённом ПК:
Invoke-Command -ComputerName PC-001 -ScriptBlock { Stop-Process -Name notepad -Force }
5️⃣ Мониторинг логов событий. Анализ логов поможет выявить ошибки и подозрительные события:
Get-WinEvent -LogName System -ComputerName PC-001 | Select-Object -First 10
Выведет 10 последних событий из журнала System.
Фильтрация только ошибок (Critical, Error, Warning):
Get-WinEvent -LogName System -ComputerName PC-001 |
Where-Object { $_.Level -le 3 } | Select-Object TimeCreated, Id, Message -First 10
6️⃣ Запуск команд на удалённых машинах. Если надо выполнить PowerShell-команду на нескольких ПК сразу:
Invoke-Command -ComputerName PC-001,PC-002 -ScriptBlock { Get-Service | Where-Object {$_.Status -eq 'Stopped'} }
Выведет список остановленных сервисов.
7️⃣ Мониторинг в реальном времени.
while ($true) {
Get-WmiObject Win32_Processor -ComputerName PC-001 | Select-Object LoadPercentage
Start-Sleep -Seconds 5
}
Будет обновлять данные каждые 5 секунд.
#windows #monitoring
🧑💻 NetworkAdmin