PowerShell: Информация о компьютерах в сети
Сегодня хочу поделиться полезным набором приёмов из PowerShell, которые помогают собирать информацию о компьютерах в сети. Часто это нужно при инвентаризации, аудитах или когда приходится быстро проверить состояние сразу нескольких машин.
Пример базового скрипта для сбора информации:
|
1 2 3 4 5 6 7 8 9 10 |
$computers = "PC1","PC2","PC3" foreach ($c in $computers) { Write-Host "Собираю данные с $c..." Get-WmiObject -Class Win32_ComputerSystem -ComputerName $c | Select-Object Name, Manufacturer, Model, TotalPhysicalMemory Get-WmiObject -Class Win32_OperatingSystem -ComputerName $c | Select-Object Caption, Version, OSArchitecture, LastBootUpTime } |
Такой скрипт выдаст:
– имя и модель ПК,
– производителя,
– объём RAM,
– версию ОС, разрядность,
– время последней загрузки.
Если нужно массово собирать данные, удобнее результаты складывать в CSV:
|
1 2 3 4 5 6 7 8 |
$computers = "PC1","PC2","PC3" $results = foreach ($c in $computers) { Get-WmiObject -Class Win32_OperatingSystem -ComputerName $c | Select-Object PSComputerName, Caption, Version, LastBootUpTime } $results | Export-Csv "C:\-\computers.csv" -NoTypeInformation -Encoding UTF8 |
В итоге получаем аккуратный файл с данными по всем машинам, который можно открыть в Excel и фильтровать по любым параметрам.
Если хочешь, чтобы список компьютеров брался автоматически из Active Directory, а не вручную. Для этого можно использовать модуль ActiveDirectory (он ставится вместе с RSAT или ролью AD DS Tools):
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
Import-Module ActiveDirectory # Получаем все имена компьютеров из AD $computers = Get-ADComputer -Filter * | Select-Object -ExpandProperty Name $results = foreach ($c in $computers) { try { Get-WmiObject -Class Win32_OperatingSystem -ComputerName $c -ErrorAction Stop | Select-Object PSComputerName, Caption, Version, LastBootUpTime } catch { [PSCustomObject]@{ PSComputerName = $c Caption = "Недоступен" Version = "" LastBootUpTime = "" } } } $results | Export-Csv "C:\-\computers.csv" -NoTypeInformation -Encoding UTF8 |