Выполнение команды ОС с использованием apache-ant для конфигурации IIS

Я пытаюсь создать сценарий ANT, который, помимо прочего, будет настраивать IIS.
Чтобы сделать это, пытаясь использовать appcmd инструмент. Однако получаю странную ошибку. appcmd Команда отлично работает вне скрипта ant, но не работает внутри.

Я использую задачу exec, чтобы начать все это:

<exec dir="C:\\Windows\\System32\\inetsrv\\" 
executable="C:\\Windows\\System32\\inetsrv\\appcmd.exe" output="d:\out.txt"> 

<arg value="appcmd set config /section:isapiCgiRestriction /+&quot;
[path='${appian_home}\\jakarta\\ISAPI\\isapi_redirect.dll',
description='Jakarta',allowed='True']&quot;" />
</exec>

Вывод через ANT:

Object 'APPCMD SET CONFIG /SECTION:ISAPICGIRESTRICTION /+?
[PATH='D:\PTMP2\APPIAN17\\JAKARTA\\ISAPI\\ISAPI_REDIRECT.DLL',
DESCRIPTION='JAKARTA',ALLOWED='TRUE']' is not supported. 
Run 'appcmd.exe /?' to display supported objects.

Однако, когда я запускаю Если я с &p выполнил эту команду в командной строке DOS, она успешно запустится:

C:\Windows\System32\inetsrv>appcmd set config /section:isapiCgiRestriction 
/+"[path='d:\ptmp2\appian17\\jakarta5\\ISAPI\\isapi_redirect.dll',descripti
on='Jakarta',allowed='True']"
Applied configuration changes to section 
"system.webServer/security/isapiCgiRestriction" for 
"MACHINE/WEBROOT/APPHOST" at configuration commit path "M   
ACHINE/WEBROOT/APPHOST"

1 ответ

Решение

Также необходимо избегать одинарных кавычек.

Также изменен путь отдельно от /

Используйте ниже:

<exec executable="cmd.exe" dir="C:/Windows/System32/inetsrv" failonerror="true">
    <arg line="/c appcmd set config /section:isapiCgiRestriction /+&quot;[path=&apos;${appian_home}/jakarta/ISAPI/isapi_redirect.dll&apos;,description=&apos;Jakarta&apos;,allowed=&apos;True&apos;]&quot;"/>
</exec>
Другие вопросы по тегам