Указание аргументов AppCmd ​​с одинарной кавычкой

Я пытаюсь настроить сайт в IIS в Windows 2016 с помощью appcmd.exe. В частности, PHP и FastCGI. Я сталкиваюсь с проблемой, где указание параметра arguments с одинарными кавычками не удается. Кажется, я не могу понять, как избежать этого или что требуется заклинание цитат. Вот команда, которая работает:

%windir%\system32\inetsrv\appcmd.exe set config /section:system.webServer/fastCGI /+"[fullPath='c:\php\php-cgi.exe', arguments='-d open_basedir=E:\Web\www.example.com;E:\Sessions\www.example.com;E:\Logs\www.example.com;E:\Temp\www.example.com', maxInstances='0', instanceMaxRequests='10000']" /commit:apphost

С open_basedir на винде мне нужно

-d open_basedir=E:\Web\www.example.com;E:\Sessions\www.example.com;E:\Logs\www.example.com;E:\Temp\www.example.com

быть заключенным в одинарные кавычки. Как это:

-d open_basedir='E:\Web\www.example.com;E:\Sessions\www.example.com;E:\Logs\www.example.com;E:\Temp\www.example.com'

Если я сначала создаю приложение FastCGI без аргументов, я могу добавить их потом так:

%windir%\system32\inetsrv\appcmd.exe set config /section:system.webServer/fastCGI /[fullPath='c:\php\php-cgi.exe'].arguments:"-d open_basedir='E:\Web\www.example.com;E:\Sessions\www.example.com;E:\Logs\www.example.com;E:\Temp\www.example.com'" /commit:apphost

Эта проблема заключается в том, что я не могу изменить дополнительные настройки после этого, потому что я не могу указать путь в одинарных кавычках с помощью appcmd.

Я могу сделать это с помощью интерфейса IIS Manager и с помощью кода C#. Так что определенно можно установить это так. Я просто не могу получить правильный формат для appcmd.

2 ответа

Вы используете две одинарные кавычки, чтобы указать одинарную кавычку в строке, например

      C:\Windows\System32\inetsrv\appcmd.exe set config  -section:system.webserver/httpProtocol /+"customHeaders.[name='Content-Security-Policy',value='default-src ''self'';']"

Я наткнулся на ваш вопрос, пытаясь найти тот же ответ. Я нашел обходной путь и хотел сообщить вам.

Используйте функцию ввода-вывода XML в appcmd.exe. На сайте с правильными заголовками, запустите appcmd list config /section:httpProtocol /xml > addheaders.xml и сохраните выходной файл. В другой системе вы можете запустить appcmd set config / в

Я уверен, что вы можете найти способ включить xml в скрипт, если не хотите полагаться на дополнительный файл.

Другие вопросы по тегам