PDA

Показать полную графическую версию : [решено] Скрипт для корректировки данных пользователя в AD


HLT
03-07-2008, 17:14
Народ,

начальство поставило задачу: регулярно корректировать данные о пользователях в 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
скрипт, который будет тупо формировать из исходных данных батник вида »
- 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
Оо Работает!

Thanx




© OSzone.net 2001-2012