Задача: получить список учетных записей компьютеров в домене, чьи IP-адреса принадлежат заданным сетям
Задача распадается на несколько подзадач:
1. Получить получить список учетных записей компьютеров в домене
2. Для каждой учетной записи компьютера получить его IP-адрес
3. Выбрать учетные записи компьютеров, чьи адреса соответствуют шаблону
Получился такой скрипт:
$CompList = (Get-ADComputer -Filter «*»)
$DumpCompList = @()
$FilteredCompList = $CompList |
% { try {$n=$_.Name; [System.Net.Dns]::GetHostEntry($_.Name)}
catch {$DumpCompList += $n} } |
? {$_.AddressList | ? {$_.IPAddressToString -match «172.16.22[5,6]»}
}
Этот скрипт не только ищет нужные нам учетные записи компьютеров, но и создает список имен компьютеров, у которых нет IP-адресов, в переменной $DumpCompList (можно использовать для удаления давно умерших компьютеров).
Примечание:
Распознавание имен идет через DNS, поэтому скрипт работает максимально быстро: задержки происходят только на именах, которых нет в DNS.
Полезные ссылки:
1. .Net класс System.Net.Dns
2. Описание метода GetHostEntry
3. Командлет Get-ADComputer
Filed under: Active Directory, Powershell | Tagged: Active Directory, Powershell | Leave a comment »