Получаем список компьютеров которые есть в Active Directory, но нет на серверах WSUS


Опубликовано 26.06.2019 13:22 | Автор: Admin

В данной статье рассматривается:
Напишем скрипт на PowerShell который выгрузит список компьютеров с нескольких серверов WSUS и проведет сверку с компьютерами из Active Directory



Иногда так случается, что не все компьютеры корректно регистрируются на WSUS сервере и при наличии большого числа ПК выявить косячные не так уж просто. В помощь к нам приходит PowerShell который с радостью нам поможет выявить конспираторов.

Представленный скрипт — это чуточку модернизированный скрипт, взятый из сети.

Запускать скрипт надо от УЗ имеющий права Администратора на серверах WSUS. Оболочка PowerShell х64.


clear 
[reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration") 
 
# Подключаемся к серверам WSUS с именами SERVER1 -3 и получаем список компьютеров»:
# 8530 - порт
 
$wsusSRV1 = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer("SERVER1", $false, 8530)
$wsusSRV2 = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer("SERVER2", $false, 8530)
$wsusSRV3 = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer("SERVER3", $false, 8530) 
 
# Второй параметр $false говорит о том, что будет использоваться HTTP протокол, а не HTTPS, т.е. не будет шифрования.
# Теперь получаем список всех компьютеров зарегистрированных на WSUS-серверах: 
 
$WSUScomps = $wsusSRV1.GetComputerTargets()+ $wsusSRV2.GetComputerTargets()+ $wsusSRV3.GetComputerTargets()
# получаем имена компьютеров
$WSUSCompNames = $WSUScomps | ForEach { $_.FullDomainName.ToUpper() }

# получаем список всех компьютеров из АД в определенной OU, выбираем только включенные УЗ.
$ADcomps = (new-object System.DirectoryServices.DirectorySearcher([ADSI]"LDAP://OU=Компы,DC=contoso,DC=com","(&(objectCategory=computer)(!userAccountControl:1.2.840.113556.1.4.803:=2))")).findAll() 
$ADCompNames = $ADcomps | ForEach {$_.GetDirectoryEntry().dNSHostName.ToString().ToUpper()} 


# Получаем имена компьютеров, которые есть в Active Directory, но отсутствуют в WSUS:
"`n`nИмена компьютеров, которые есть в Active Directory, но отсутствуют в WSUS:`n"
$NoWSUSCompNames = $ADCompNames | Where { $WSUSCompNames -notcontains $_ } | Sort-Object
# получаем расширенные данные о ПК
$CompsInfo= $NoWSUSCompNames.Replace(".CONTOSO.COM","") | Get-ADComputer -Properties * | FT Name,description,operatingSystem,LastLogonDate,distinguishedName

#Выводим результаты в файл.
$CompsInfo | Out-File d:/NoWSUS.txt -Width 500 -Encoding default

На выходе у нас файл с компьютерами которые есть в Active Directory но нет на серверах WSUS


Метки
WSUS PowerShell Windows Active Directory Заметка

Комментариев: 0

 27 |


Добавить комментарий:
Отправить