Войти

Показать полную графическую версию : [решено] Нужен скрипт cmd,vbs,PowerShell для проверки списка пользователей и их удаление из AD


alex_frog
22-07-2009, 13:14
Добрый день!

Есть список пользователей, которые нужно удалить из AD Windows server 2003. Но некоторых пользователей, которые есть в списках нет в AD.
Поэтому требуется:
1. Проверка пользователей в AD из списка, сохранение результатов в блокнот, кто есть в базе данных контроллера домена.
Например:
dsquery user "CN=Пупкин В.И,OU=Managers,OU=Sales,OU=Domain Users,DC=example,DC=local"
dsquery user "CN=Сидоров В.И,OU=Managers,OU=Sales,OU=Domain Users,DC=example,DC=local"
Всех пользователей, которые проверены, что есть в AD занести в блокнот, например users.txt.
2. Удаление этих пользователей из проверенных, из блокнота users.txt
Например:
dsrm -subtree -noprompt -c "CN=Пупкин В.И,OU=Managers,OU=Sales,OU=Domain Users,DC=example,DC=local"
dsrm -subtree -noprompt -c "CN=Сидоров В.И,OU=Managers,OU=Sales,OU=Domain Users,DC=example,DC=local"
Требуется либо 2 отдельных скрипта (1 проверяет, второй удаляет), либо все в одном, можно в cmd, vbs и т.д.

amel27
22-07-2009, 15:39
alex_frog, а в чем проблема?.. ну ругнется dsrm что какого-то объекта нет, остальных-то удалит

alex_frog
22-07-2009, 16:19
Тут нужно знать каких пользователей удалил, список удаленных.
Поскольку потом нужно все перенаправленные папки этих пользователей тоже скриптом автоматически удалить. Может к команде (dsrm -subtree -noprompt -c "CN=Пупкин В.И,OU=Managers,OU=Sales,OU=Domain Users,DC=example,DC=local") можно привязать лог файл со списком успешно удаленных!?

amel27
22-07-2009, 16:45
можно привязать лог файл со списком успешно удаленных!? »
легко - при успехе переменная ERRORLEVEL=0, и наоборот... для конкретики нужен код или пример списка

alex_frog
22-07-2009, 17:08
Например Удаляю из АД пользователей Пупкин И.А, Сидоров П.В,Иванов С.А и т.д. 1200 пользователей.
Скрипт в cmd.
Код скрипта будет пока такой:

dsrm -subtree -noprompt -c "CN=Пупкин В.И,OU=Managers,OU=Sales,OU=Domain Users,DC=example,DC=local"
dsrm -subtree -noprompt -c "CN=Иванов С.А,OU=Managers,OU=Sales,OU=Domain Users,DC=example,DC=local"
dsrm -subtree -noprompt -c "CN=Сидоров П.В,OU=Managers,OU=Sales,OU=Domain Users,DC=example,DC=local"
dsrm -subtree -noprompt -c "CN=Иванов С.А,OU=Managers,OU=Sales,OU=Domain Users,DC=example,DC=local"

Нужно получить результат успешного удаления пользователей в .txt
Либо CN=Пупкин В.И,OU=Managers,OU=Sales,OU=Domain Users,DC=example,DC=local
Лучше так, Это и будет список удаленных пользователей:
Пупкин В.И
Иванов С.А
Сидоров П.В
и т.д.
К примеру Иванова в Ад нет, следовательно не записан в список.

Теперь как прикрутить переменную ERRORLEVEL=0 к командам dsrm -subtree -noprompt -c "CN=Фамилия.Имя,OU=Managers,OU=Sales,OU=Domain Users,DC=example,DC=local"

amel27
22-07-2009, 17:59
alex_frog, где-то так:
@Echo Off
SetLocal EnableDelayedExpansion

Set $LST=CN.txt
Set $DEL=DEL.txt
Set $OU=OU=Managers,OU=Sales,OU=Domain Users,DC=example,DC=local

If Exist "%$DEL%" DEL /F "%$DEL%"
For /F "UseBackQ Delims=" %%i In ("%$LST%") Do (
dsrm -subtree -noprompt -c "CN=%%i,%$OU%"
If Errorlevel==0 Echo %%i>>"%$DEL%"
)


> "CN.txt" - файл-список CN (в DOS кодировке)
> "DEL.txt" - список успешно удаленных CN

alex_frog
22-07-2009, 18:41
Спасибо! Усё нормульно!




© OSzone.net 2001-2012