Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Нужен скрипт cmd,vbs,PowerShell для проверки списка пользователей и их удаление из AD (http://forum.oszone.net/showthread.php?t=145851)

alex_frog 22-07-2009 13:14 1174549

Нужен скрипт cmd,vbs,PowerShell для проверки списка пользователей и их удаление из AD
 
Добрый день!

Есть список пользователей, которые нужно удалить из 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 1174698

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

alex_frog 22-07-2009 16:19 1174733

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

amel27 22-07-2009 16:45 1174765

Цитата:

Цитата alex_frog
можно привязать лог файл со списком успешно удаленных!? »

легко - при успехе переменная ERRORLEVEL=0, и наоборот... для конкретики нужен код или пример списка

alex_frog 22-07-2009 17:08 1174794

Например Удаляю из АД пользователей Пупкин И.А, Сидоров П.В,Иванов С.А и т.д. 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 1174839

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 1174872

Спасибо! Усё нормульно!


Время: 05:58.

Время: 05:58.
© OSzone.net 2001-