Ru-Board.club
← Вернуться в раздел «В помощь системному администратору»

» удалить из Active Directory старые компьютеры

Автор: borov
Дата сообщения: 10.02.2003 14:54
В "запущенном" домене много записей о старых компьютерах. Запоминается ли где-нибудь дата последнего логина с данного компьютера или его включения? Как получить такую информацию, если она есть?
Аналогичный вопрос про юзеров.
Автор: Crash Master
Дата сообщения: 11.02.2003 08:04
borov
С компьютерами увы, тяжело, но юзеров можешь посмотреть с помощью Ideal Administration
http://www.pointdev.com/
Автор: inQui
Дата сообщения: 01.11.2004 15:17
borov
я смотрел по регистрациям в DHCP, там по дефолту 8 дней таймаута на регистрацию. Если комп в списке не находишь, значит его точно не было в сети более 8 дней.
Автор: Alan Mon
Дата сообщения: 01.11.2004 15:43
borov
Мне в свое время сильно помогла вот эта статья
Автор: SpiderPlus
Дата сообщения: 03.02.2005 08:48
посмотрите на утилитку OldCmp на http://www.joeware.net/win/free/tools/oldcmp.htm
это то что нужно.
Автор: cub0
Дата сообщения: 03.02.2005 13:48
Добрый день
Я попытался сделать это скриптом. Он выводит список компьютеров из AD, записи о которых отсутствуют в DNS.
Условия:
На DNS сервере должен стоять WMI DNS Provider (ftp://ftp.microsoft.com/reskit/win2000/dnsprov.zip)
Зона в DNS должна быть очищена от устаревших записей, т.е. настроено устаревание.
Скрипт не оптимизировался

strDNSServer = "zzzz"
strDomainName = "zzzzz.ru"
Set Computers = GetObject("LDAP://cn=computers,dc=zzzzz-ra,dc=ru")
Set objWMIService = GetObject("winmgmts:\\" & strDNSServer & "\root\MicrosoftDNS")
Set colItems = objWMIService.ExecQuery("Select * from MicrosoftDNS_AType Where DomainName = '" & strDomainName &"'")

Computers.Filter = Array("computer")
For Each computer in Computers
IsFound=false
For Each objItem in colItems
if objItem.OwnerName<>strDomainName then
If UCase(computer.cn & "." & strDomainName)=UCase(objItem.OwnerName) then
IsFound = true
End If
End If
Next
If not IsFound then
' Для удаления заменить на computer.DeleteObject (0)
wscript.echo computer.cn
End If
Next
Автор: borov
Дата сообщения: 08.02.2005 13:33
В O'Reilly Active Directory Cookbook такое решение:

8.8.1 Problem
You want to find inactive computer accounts in a domain.

8.8.2 Solution

These solutions only apply to Windows-based machines. Other types of machines (e.g., Unix) that have accounts in Active Directory may not update their login timestamps or passwords, which are used to determine inactivity.

8.8.2.1 Using a command-line interface
The following query will locate all inactive computers in the current forest:

> dsquery computer forestroot -inactive <NumWeeks>
You can also use domainroot in combination with the -d option to query a specific domain:

> dsquery computer domainroot -d <DomainName> -inactive <NumWeeks>
or you can target your query at a specific container:

> dsquery computer ou=MyComputers,dc=rallencorp,dc=com -inactive <NumWeeks>

This can only be run against a Windows Server 2003 domain functional level or higher domain.

Автор: abatvart
Дата сообщения: 03.11.2005 13:29
Специально для этого утиль Active Directory Janitor
Автор: Serjevski
Дата сообщения: 23.06.2009 10:24
abatvart

Спасибо, отличная программа!
Автор: Nike000
Дата сообщения: 23.06.2009 12:31
а я Hyena использую для этих целей
Автор: araneon
Дата сообщения: 16.04.2013 13:26
Ребят подскажите, нужен скрипт для удаления компьютера из домена.
для добавления компьютера в домен пользуемся данным скриптом


Код:
strComputer = InputBox("Введите имя компьютера","Добавление компьютера в домен","XX")
strComputerUser = InputBox("Введите имя(группу), который(ая) будет добавлять компьютер в домен","Уч. запись для добавления в домен","XXXXX\Moscow-Wks-Add")
Region="Moscow"

Const ADS_UF_PASSWD_NOTREQD = &h0020
Const ADS_UF_WORKSTATION_TRUST_ACCOUNT = &h1000
Const ADS_ACETYPE_ACCESS_ALLOWED = &h0
Const ADS_ACETYPE_ACCESS_ALLOWED_OBJECT = &h5
Const ADS_FLAG_OBJECT_TYPE_PRESENT = &h1
Const ADS_RIGHT_GENERIC_READ = &h80000000
Const ADS_RIGHT_DS_SELF = &h8
Const ADS_RIGHT_DS_WRITE_PROP = &h20
Const ADS_RIGHT_DS_CONTROL_ACCESS = &h100

Const ALLOWED_TO_AUTHENTICATE = _
"{68B1D179-0D15-4d4f-AB71-46152E79A7BC}"
Const RECEIVE_AS = "{AB721A56-1E2f-11D0-9819-00AA0040529B}"
Const SEND_AS = "{AB721A54-1E2f-11D0-9819-00AA0040529B}"
Const USER_CHANGE_PASSWORD = _
"{AB721A53-1E2f-11D0-9819-00AA0040529b}"
Const USER_FORCE_CHANGE_PASSWORD = _
"{00299570-246D-11D0-A768-00AA006E0529}"
Const USER_ACCOUNT_RESTRICTIONS = _
"{4C164200-20C0-11D0-A768-00AA006E0529}"
Const VALIDATED_DNS_HOST_NAME = _
"{72E39547-7B18-11D1-ADEF-00C04FD8D5CD}"
Const VALIDATED_SPN = "{F3A64788-5306-11D1-A9C5-0000F80367C1}"

Set objRootDSE = GetObject("LDAP://rootDSE")
Set objContainer = GetObject("LDAP://ou=Computers,ou="&Region&"," & _
objRootDSE.Get("defaultNamingContext"))

Set objComputer = objContainer.Create _
("Computer", "cn=" & strComputer)
objComputer.Put "sAMAccountName", strComputer & "$"
objComputer.Put "userAccountControl", _
ADS_UF_PASSWD_NOTREQD Or ADS_UF_WORKSTATION_TRUST_ACCOUNT
objComputer.SetInfo

Set objSecurityDescriptor = objComputer.Get("ntSecurityDescriptor")
Set objDACL = objSecurityDescriptor.DiscretionaryAcl

Set objACE1 = CreateObject("AccessControlEntry")
objACE1.Trustee = strComputerUser
objACE1.AccessMask = ADS_RIGHT_GENERIC_READ
objACE1.AceFlags = 0
objACE1.AceType = ADS_ACETYPE_ACCESS_ALLOWED

Set objACE2 = CreateObject("AccessControlEntry")
objACE2.Trustee = strComputerUser
objACE2.AccessMask = ADS_RIGHT_DS_CONTROL_ACCESS
objACE2.AceFlags = 0
objACE2.AceType = ADS_ACETYPE_ACCESS_ALLOWED_OBJECT
objACE2.Flags = ADS_FLAG_OBJECT_TYPE_PRESENT
objACE2.ObjectType = ALLOWED_TO_AUTHENTICATE

Set objACE3 = CreateObject("AccessControlEntry")
objACE3.Trustee = strComputerUser
objACE3.AccessMask = ADS_RIGHT_DS_CONTROL_ACCESS
objACE3.AceFlags = 0
objACE3.AceType = ADS_ACETYPE_ACCESS_ALLOWED_OBJECT
objACE3.Flags = ADS_FLAG_OBJECT_TYPE_PRESENT
objACE3.ObjectType = RECEIVE_AS

Set objACE4 = CreateObject("AccessControlEntry")
objACE4.Trustee = strComputerUser
objACE4.AccessMask = ADS_RIGHT_DS_CONTROL_ACCESS
objACE4.AceFlags = 0
objACE4.AceType = ADS_ACETYPE_ACCESS_ALLOWED_OBJECT
objACE4.Flags = ADS_FLAG_OBJECT_TYPE_PRESENT
objACE4.ObjectType = SEND_AS

Set objACE5 = CreateObject("AccessControlEntry")
objACE5.Trustee = strComputerUser
objACE5.AccessMask = ADS_RIGHT_DS_CONTROL_ACCESS
objACE5.AceFlags = 0
objACE5.AceType = ADS_ACETYPE_ACCESS_ALLOWED_OBJECT
objACE5.Flags = ADS_FLAG_OBJECT_TYPE_PRESENT
objACE5.ObjectType = USER_CHANGE_PASSWORD

Set objACE6 = CreateObject("AccessControlEntry")
objACE6.Trustee = strComputerUser
objACE6.AccessMask = ADS_RIGHT_DS_CONTROL_ACCESS
objACE6.AceFlags = 0
objACE6.AceType = ADS_ACETYPE_ACCESS_ALLOWED_OBJECT
objACE6.Flags = ADS_FLAG_OBJECT_TYPE_PRESENT
objACE6.ObjectType = USER_FORCE_CHANGE_PASSWORD

Set objACE7 = CreateObject("AccessControlEntry")
objACE7.Trustee = strComputerUser
objACE7.AccessMask = ADS_RIGHT_DS_WRITE_PROP
objACE7.AceFlags = 0
objACE7.AceType = ADS_ACETYPE_ACCESS_ALLOWED_OBJECT
objACE7.Flags = ADS_FLAG_OBJECT_TYPE_PRESENT
objACE7.ObjectType = USER_ACCOUNT_RESTRICTIONS

Set objACE8 = CreateObject("AccessControlEntry")
objACE8.Trustee = strComputerUser
objACE8.AccessMask = ADS_RIGHT_DS_SELF
objACE8.AceFlags = 0
objACE8.AceType = ADS_ACETYPE_ACCESS_ALLOWED_OBJECT
objACE8.Flags = ADS_FLAG_OBJECT_TYPE_PRESENT
objACE8.ObjectType = VALIDATED_DNS_HOST_NAME

Set objACE9 = CreateObject("AccessControlEntry")
objACE9.Trustee = strComputerUser
objACE9.AccessMask = ADS_RIGHT_DS_SELF
objACE9.AceFlags = 0
objACE9.AceType = ADS_ACETYPE_ACCESS_ALLOWED_OBJECT
objACE9.Flags = ADS_FLAG_OBJECT_TYPE_PRESENT
objACE9.ObjectType = VALIDATED_SPN

objDACL.AddAce objACE1
objDACL.AddAce objACE2
objDACL.AddAce objACE3
objDACL.AddAce objACE4
objDACL.AddAce objACE5
objDACL.AddAce objACE6
objDACL.AddAce objACE7
objDACL.AddAce objACE8
objDACL.AddAce objACE9

objSecurityDescriptor.DiscretionaryAcl = objDACL
objComputer.Put "ntSecurityDescriptor", objSecurityDescriptor
rem objComputer.SetInfo
Wscript.echo "Completed"    

Страницы: 1

Предыдущая тема: Сервер терминалов пускает только клиентов "Администраторов"


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.