Логическое продолжение этого поста и ответвление этого поста. Все посты про wmic можно найти по этому тегу.
И снова пост про Get-WmiObject и железо на удаленных хостах. Теперь речь пойдёт о сборе исключительно моделей материнских плат с компьютеров в домене с использованием скрипта на PowerShell и Active Directory.
Приведённый ниже скрипт соберёт список компьютеров из указанного подразделения в домене, обратится к ним, составит список моделей материнских плат, сохранит данные в текстовый документ models.txt и разместит его рядом с ps1.
Всё, что нужно — задать нужное подразделение в переменной $unit.
## Заголовок скрипта ##
[System.Console]::Title = "Получение модели материнской платы"
## Импорт модулей ##
Import-Module -Name ActiveDirectory
## Блок переменных ##
$unit = "OU=PC,OU=COMPANY,DC=org,DC=domain,DC=ru" # <-- Подразделение для поиска компьютеров
$mbfile = "models.txt" # <-- Имя файла для сохранения данных
## Работа скрипта ##
try
{
# Получение списка компьютеров из подразделения #
Write-Host "Формирование списка компьютеров..." -ForegroundColor Cyan
$pcs = (Get-ADComputer -SearchBase "$unit" -Filter * -Properties *).Name
Write-Host "Формирование списка завершено!" -ForegroundColor Green
Sleep(5)
}
catch
{
Write-Host "Ошибка обращения к Active Directory или подразделению!" -ForegroundColor Red
Read-Host
}
# Цикл для получения модели материнской платы компьютеров #
if ($pcs -eq $null)
{
Write-Host "Не удалось получить данные из массива!" -ForegroundColor Red
Write-Host "Возможно подразделение $unit не содержит учётных записей компьютеров." -ForegroundColor Red
Read-Host
}
else
{
Clear
foreach($pc in $pcs)
{
try
{
Write-Host
Write-Host "Получение модели материнской платы на $pc..." -ForegroundColor Cyan
$mbmodel = (Get-WmiObject -ComputerName $pc -Class win32_baseboard -ErrorAction Ignore).Product
if ($mbmodel -ne $null)
{
Write-Host "Модель материнской платы для $pc успешно получена!" -ForegroundColor Green
Write-Host "Идёт запись файла..." -ForegroundColor Cyan
$content = "$pc, $mbmodel"
$content | Out-File -FilePath $mbfile -Append -ErrorAction Stop
Write-Host "Данные внесены в файл $mbfile!" -ForegroundColor Green
}
else { Write-Host "Не удалось получить модель материнской платы $pc..." -ForegroundColor Red }
}
catch
{
Write-Host "Ошибка получения модели материнской платы для $pc..." -ForegroundColor Red
}
}
}
Метод удобен, когда надо собрать модели материнских плат компьютеров из какого-то определённого подразделения в домене. Единственный минус заключается в том, что сбор осуществляется только с доступных (на момент работы скрипта) компьютеров.