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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Создание подписи в Outlook 2007/2010 батником. (http://forum.oszone.net/showthread.php?t=275465)

BumbleBee 09-01-2014 15:40 2285498

Создание подписи в Outlook 2007/2010 батником.
 
Доброго времени суток, уважаемые коллеги!

Передо мной встала задача автоматической вставки подписи в 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.

Заранее благодарен за помощь.

Iska 09-01-2014 16:16 2285512

Цитата:

Цитата BumbleBee
при этом на терминале, где был добавлен компонент "Оснастки и программы командной строки службы Active Directory", все работает как надо. А вот на обычных компьютерах, где подобной компоненты нет - работать естественно ничего не будет. Но устанавливать на каждый компьютер в домене средства удаленного администрирования сервера я не хочу. »

Используйте WSH.

BumbleBee 09-01-2014 16:48 2285528

Цитата:

Используйте WSH.
В таком случае и скрипт мне придется переписать на том же VBScript?

Iska 09-01-2014 17:05 2285537

Естественно. Или на JScript. Кому что нравится.

Непонятно только почему «…и скрипт». Только скрипт. Вместо пакетного файла и использованных утилит командной строки.

BumbleBee 09-01-2014 17:33 2285554

Тогда, как мне кажется, стоит задуматься в сторону PoSh. Поскольку ни VBScript ни JScript я должным образом не знаю. А почему не только скрипт? - просто Outlook при создании подписи добавляет в него строки стилевых настроек, и, как мне опять же показалось, 500 строк лучше держать отдельным файлом. Хотя, в силу своего опыта в решении подобных вещей, как написание скриптов, я, возможно, решил задачу достаточно громоздким способом. :)

Просто мне казалось, что все-таки можно добавить в клиентскую систему только консольные утилиты AD.

Iska 09-01-2014 18:15 2285575

Если есть возможность везде использовать PoSH — вполне возможно. Какой-то принципиальной разницы в доступе к AD нет.

Цитата:

Цитата BumbleBee
А почему не только скрипт? - просто Outlook при создании подписи добавляет в него строки стилевых настроек, и, как мне опять же показалось, 500 строк лучше держать отдельным файлом. »

Ясно.


Время: 10:05.

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