BumbleBee
09-01-2014, 15:40
Доброго времени суток, уважаемые коллеги!
Передо мной встала задача автоматической вставки подписи в Outlook 2007 / 2010 в windows 7 / 2k8r2 для каждого пользователя. Из железа имеется один сервер терминалов и около 100 компьютеров с Windows 7. Подпись состоит из пары картинок и контактной информации пользователя (фамилия, имя, внутренний телефон, мобильный телефон и опционально скайп). Для удобства решил всю эту информацию хранить в одном месте - в Active Directory и "дергать" ее от туда посредством команд dsquery и dsget. Принцип работы следующий:
1. генерируем в Outlook шаблон подписи со всеми картинками и позиционированием.
2. удаляем из шаблона информацию о конкретном пользователе, под кем в Outlook'е генерим шаблон (поскольку она у меня в конце шаблона, то тупо удаляю последние строки, которые потом добавлю батником,). это делается однократно.
3. вот сам батник:
@echo off
set ifpath=%userprofile%\AppData\Roaming\Microsoft
set destpath=%userprofile%\AppData\Roaming\Microsoft\Signatures
set sourcepath=D:\Users\Default\Source\Signatures
if not exist "%ifpath%\Outlook" goto :end
if exist "%destpath%\auto.files" goto :end
:begin
for /f "tokens=*" %%a in (
'cmd.exe /c dsquery user -samid %username%'
) do set qwe=%%a
for /f "eol=d tokens=*" %%b in (
'cmd.exe /c dsget user %qwe% -fn'
) do set fstnm=%%b
for /f "eol=d tokens=*" %%b in (
'cmd.exe /c dsget user %qwe% -ln'
) do set lstnm=%%b
for /f "eol=d tokens=*" %%b in (
'cmd.exe /c dsget user %qwe% -title'
) do set title=%%b
for /f "eol=d tokens=*" %%b in (
'cmd.exe /c dsget user %qwe% -company'
) do set company=%%b
for /f "eol=d tokens=*" %%b in (
'cmd.exe /c dsget user %qwe% -mobile'
) do set mobile=%%b
for /f "eol=d tokens=*" %%b in (
'cmd.exe /c dsget user %qwe% -pager'
) do set pager=%%b
for /f "eol=d tokens=*" %%b in (
'cmd.exe /c dsget user %qwe% -tel'
) do set telephone=%%b
:deleting
rd /S /Q %destpath%\*
del /F /Q %destpath%\*
:copying
echo D | xcopy %sourcepath%\auto.files %destpath%\auto.files /H /E /G /R /Y
echo F | xcopy %sourcepath%\auto.htm %destpath%\auto.htm /H /E /G /R /Y
@chcp 1251 > nul
echo %fstnm: =%%lstnm: =%^<br^> >> %destpath%\auto.htm
echo %title: =% >> %destpath%\auto.htm
echo %company: =% >> %destpath%\auto.htm
echo ^<br^> >> %destpath%\auto.htm
@chcp 866 > nul
for /f "tokens=1-4" %%c in (%sourcepath%\array.txt) do echo %%c %%d Renault %%e %%f^<br^> >> %destpath%\auto.htm
for /f "tokens=5,6" %%c in (%sourcepath%\array.txt) do echo %%c - %%d^<br^> >> %destpath%\auto.htm
for /f "tokens=7,8" %%c in (%sourcepath%\array.txt) do echo %%c.: 8-123-456-7890, %%d.: %telephone%^<br^> >> %destpath%\auto.htm
@if "%mobile%"=="" goto :skipmobile
for /f "tokens=9" %%c in (%sourcepath%\array.txt) do echo %%c.: %mobile%^<br^> >> %destpath%\auto.htm
:skipmobile
@if "%pager%"=="" goto :skipskype
echo Skype: ^<span lang^=EN-US style^='font-size:9.0pt;font-family:"Arial","sans-serif"; color:black;mso-ansi-language:EN-US'^>%pager%^</span^>^<br^> >> %destpath%\auto.htm
:skipskype
for /f "tokens=*" %%d in (%sourcepath%\end.txt) do echo %%d >> %destpath%\auto.htm
reg add "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook\9375CFF0413111d3B88A00104B2A6676\00000003" /v "New Signature" /t REG_BINARY /d 6100750074006F000000 /f
reg add "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook\9375CFF0413111d3B88A00104B2A6676\00000003" /v "Reply-Forward Signature" /t REG_BINARY /d 6100750074006F000000 /f
:end
при этом на терминале, где был добавлен компонент "Оснастки и программы командной строки службы Active Directory", все работает как надо. А вот на обычных компьютерах, где подобной компоненты нет - работать естественно ничего не будет. Но устанавливать на каждый компьютер в домене средства удаленного администрирования сервера я не хочу.
В связи с этим у меня вопрос: существует ли возможность установить только средства командной строки AD (dsquery и dsget и т.д.)? если же такой возможности Microsoft не предоставляет, имеется ли в арсенале клиентских машин консольные средства, которыми можно будет выдернуть нужные мне для подписи данные из AD.
Заранее благодарен за помощь.
Передо мной встала задача автоматической вставки подписи в Outlook 2007 / 2010 в windows 7 / 2k8r2 для каждого пользователя. Из железа имеется один сервер терминалов и около 100 компьютеров с Windows 7. Подпись состоит из пары картинок и контактной информации пользователя (фамилия, имя, внутренний телефон, мобильный телефон и опционально скайп). Для удобства решил всю эту информацию хранить в одном месте - в Active Directory и "дергать" ее от туда посредством команд dsquery и dsget. Принцип работы следующий:
1. генерируем в Outlook шаблон подписи со всеми картинками и позиционированием.
2. удаляем из шаблона информацию о конкретном пользователе, под кем в Outlook'е генерим шаблон (поскольку она у меня в конце шаблона, то тупо удаляю последние строки, которые потом добавлю батником,). это делается однократно.
3. вот сам батник:
@echo off
set ifpath=%userprofile%\AppData\Roaming\Microsoft
set destpath=%userprofile%\AppData\Roaming\Microsoft\Signatures
set sourcepath=D:\Users\Default\Source\Signatures
if not exist "%ifpath%\Outlook" goto :end
if exist "%destpath%\auto.files" goto :end
:begin
for /f "tokens=*" %%a in (
'cmd.exe /c dsquery user -samid %username%'
) do set qwe=%%a
for /f "eol=d tokens=*" %%b in (
'cmd.exe /c dsget user %qwe% -fn'
) do set fstnm=%%b
for /f "eol=d tokens=*" %%b in (
'cmd.exe /c dsget user %qwe% -ln'
) do set lstnm=%%b
for /f "eol=d tokens=*" %%b in (
'cmd.exe /c dsget user %qwe% -title'
) do set title=%%b
for /f "eol=d tokens=*" %%b in (
'cmd.exe /c dsget user %qwe% -company'
) do set company=%%b
for /f "eol=d tokens=*" %%b in (
'cmd.exe /c dsget user %qwe% -mobile'
) do set mobile=%%b
for /f "eol=d tokens=*" %%b in (
'cmd.exe /c dsget user %qwe% -pager'
) do set pager=%%b
for /f "eol=d tokens=*" %%b in (
'cmd.exe /c dsget user %qwe% -tel'
) do set telephone=%%b
:deleting
rd /S /Q %destpath%\*
del /F /Q %destpath%\*
:copying
echo D | xcopy %sourcepath%\auto.files %destpath%\auto.files /H /E /G /R /Y
echo F | xcopy %sourcepath%\auto.htm %destpath%\auto.htm /H /E /G /R /Y
@chcp 1251 > nul
echo %fstnm: =%%lstnm: =%^<br^> >> %destpath%\auto.htm
echo %title: =% >> %destpath%\auto.htm
echo %company: =% >> %destpath%\auto.htm
echo ^<br^> >> %destpath%\auto.htm
@chcp 866 > nul
for /f "tokens=1-4" %%c in (%sourcepath%\array.txt) do echo %%c %%d Renault %%e %%f^<br^> >> %destpath%\auto.htm
for /f "tokens=5,6" %%c in (%sourcepath%\array.txt) do echo %%c - %%d^<br^> >> %destpath%\auto.htm
for /f "tokens=7,8" %%c in (%sourcepath%\array.txt) do echo %%c.: 8-123-456-7890, %%d.: %telephone%^<br^> >> %destpath%\auto.htm
@if "%mobile%"=="" goto :skipmobile
for /f "tokens=9" %%c in (%sourcepath%\array.txt) do echo %%c.: %mobile%^<br^> >> %destpath%\auto.htm
:skipmobile
@if "%pager%"=="" goto :skipskype
echo Skype: ^<span lang^=EN-US style^='font-size:9.0pt;font-family:"Arial","sans-serif"; color:black;mso-ansi-language:EN-US'^>%pager%^</span^>^<br^> >> %destpath%\auto.htm
:skipskype
for /f "tokens=*" %%d in (%sourcepath%\end.txt) do echo %%d >> %destpath%\auto.htm
reg add "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook\9375CFF0413111d3B88A00104B2A6676\00000003" /v "New Signature" /t REG_BINARY /d 6100750074006F000000 /f
reg add "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook\9375CFF0413111d3B88A00104B2A6676\00000003" /v "Reply-Forward Signature" /t REG_BINARY /d 6100750074006F000000 /f
:end
при этом на терминале, где был добавлен компонент "Оснастки и программы командной строки службы Active Directory", все работает как надо. А вот на обычных компьютерах, где подобной компоненты нет - работать естественно ничего не будет. Но устанавливать на каждый компьютер в домене средства удаленного администрирования сервера я не хочу.
В связи с этим у меня вопрос: существует ли возможность установить только средства командной строки AD (dsquery и dsget и т.д.)? если же такой возможности Microsoft не предоставляет, имеется ли в арсенале клиентских машин консольные средства, которыми можно будет выдернуть нужные мне для подписи данные из AD.
Заранее благодарен за помощь.