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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Windows NT/2000/2003 (http://forum.oszone.net/forumdisplay.php?f=5)
-   -   [решено] Скрипт для корректировки данных пользователя в AD (http://forum.oszone.net/showthread.php?t=110616)

HLT 03-07-2008 17:14 841473

Скрипт для корректировки данных пользователя в AD
 
Народ,

начальство поставило задачу: регулярно корректировать данные о пользователях в AD

Вкратце: раз в день какой-то програмулиной будет формироваться CSV-файл следующей структуры:
login-name, название подразделения, должность, login-name начальника
Например,
Код:

ivanov, Бухгалтерия, Бухгалтер, petrov
sidorov, Бухгалтерия, Экономист, petrov

Нужно родить скрипт, который будет брать нужные поля из CSV-файла и править соответствующие поля в AD


Другой вариант - скрипт, который будет тупо формировать из исходных данных батник вида
Код:

dsquery user -samid ivanov | dsmod user -dept "Бухгалтерия" -title "Бухгалтер" -mgr "CN=Petrov\, Ivan,OU=Users,OU=Accounting,DC=mydomain,DC=ru"
dsquery user -samid sidorov | dsmod user -dept "Бухгалтерия" -title "Экономист" -mgr "CN=Petrov\, Ivan,OU=Users,OU=Accounting,DC=mydomain,DC=ru"

А я уж этот батник потом сам запущу )

amel27 04-07-2008 09:03 841984

Цитата:

Цитата HLT
скрипт, который будет тупо формировать из исходных данных батник вида »

- CSV-файл вроде без пробелов в разделителях, только запятые, иначе придется кавычки ставить;
- будем исходить, что CSV в Windows кодировке (в DOS все гораздо проще);
- выводить в CMD-файл или выполнять на ходу разницы нет, пусть будет в файл:
Код:

@Echo Off

Set $IFile=file.csv
Set $OFile=file.cmd

If Exist %$OFile% DEL /F /Q %$OFile%

CHCP 1251 >Nul
For /F "Tokens=1-4 Delims=," %%i In (%$IFile%) Do Call :MAIN %%i "%%~j" "%%~k" %%l
Exit

:MAIN
:: --
If "%~1"=="" GoTo :EOF
If "%~4"=="" GoTo :EOF

CHCP 866 >Nul
For /F "Delims=" %%i In ('dsquery user -samid %1') Do Set $usr=%%i
For /F "Delims=" %%i In ('dsquery user -samid %4') Do Set $mgr=%%i

If {%$usr%}=={} GoTo :EOF
If {%$mgr%}=={} GoTo :EOF

Echo dsmod user %$usr% -dept "%~2" -title "%~3" -mgr %$mgr% >>%$OFile%
:: --
GoTo :EOF


HLT 04-07-2008 10:32 842028

Оо Работает!

Thanx


Время: 20:32.

Время: 20:32.
© OSzone.net 2001-