Как правильно автоматизировать удаление объектов в AD?

Добрый день!

Пытаюсь автоматизировать чистку AD от компьютеров уволенных сотрудников, вот пример скрипта:

$DisableUsers = Get-ADUser -Filter 'Enabled -eq "False"' -SearchBase 'OU=2,OU=1,DC=company,DC=name'

foreach ($User in $DisableUsers){$Name = $User.samaccountname}

Get-ADComputer -Identity "$Name"  | Remove-ADComputer -ErrorAction SilentlyContinue -confirm:$false


В итоге получаю следующее:

Get-ADComputer : Cannot find an object with identity: 'computername' under: 'DC=company,DC=name'.
At line:1 char:1
+ Get-ADComputer -Identity "$Name"  | Remove-ADComputer -ErrorAction SilentlyConti ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (computername:ADComputer) [Get-ADComputer], ADIdentityNotFoundException
    + FullyQualifiedErrorId : ActiveDirectoryCmdlet:Microsoft.ActiveDirectory.Management.ADIdentityNotFoundException,Microsoft.ActiveDirectory.Management.Commands.GetAD 
   Computer


Хотя такой объект есть в наличии, что я делаю не так?
  • Вопрос задан
  • 791 просмотр
Пригласить эксперта
Ответы на вопрос 3
@yellowmew
Cloud infrastructure, monitoring engineer. SRE
У вас компьютер пользователя называется полностью аналогично имени пользователя?
Странное решение.
Вообще, в AD компьютеры и пользователи это два разных, независимых друг от друга объекта.
На компьютер уволенного пользователя можно посадить нового пользователя, а пересоздавать для каждого нового сотрудника компьютер с нуля, включая его ввод в домен это... странно.
Правильнее отключать неактивные записи компьтеров, не входившие в домен в течение долгого времени.
Но вообще вам в помощь :
community.spiceworks.com/scripts/show/1861-find-an...
Ответ написан
@hellsq
администрирование exchange server/lotus domino
сделайте вывод значений $Name. Вполне может оказаться так, что там будет не совсем то, что вы ожидали. Плюс я не совсем понимаю, зачем надо было ставить $Name в кавычки при вызове Get-Adcomputer.
Ответ написан
@dinizzzo
Администратор Linux, Windows
У вас имя компьютера в AD соответствует SamAccountname этого же компьютера? Т.е. возможна такая ситуация, когда компьютер в AD называется например: "Компьютер Васи", а сам имеет имя "wks0001@domain.local". Так вот в таком случае параметр name компьютера будет "Компьютер Васи", а SamAccountname "wks0001$" (с значком $ на конце) и тогда команда Get-ADComputer -Identity "wks0001" не отработает.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы