Как установить веб-сайт назначения на MSDeploy.командная строка в EXE

у меня есть пакет Web Deploy 3.5, который я хочу развернуть на удаленном сервере. Как указать имя сайта в MSDeploy.командная строка в EXE?

вот что у меня пока есть:

C:Program Files (x86)IISMicrosoft Web Deploy V3msdeploy.exe
    -source:package='package.zip' 
    -dest:auto,computerName="ServerName",includeAcls="False" 
    -verb:sync 
    -disableLink:AppPoolExtension 
    -disableLink:ContentExtension 
    -disableLink:CertificateExtension 
    -setParamFile:"package.SetParameters.xml"

но название сайта указано в package.SetParamters.xml файл, и я бы предпочел установить его в командной строке. Некоторые из мест, где я хочу развернуть этот пакет, - это разные сайты, расположенные на одном сервере, такие как наши сайты Stage и UAT.

Я посмотрел на использование поставщиков iisapp и appHostConfig, описанных здесь: http://technet.microsoft.com/en-us/library/dd569040%28v=ws.10%29.aspx

но у меня возникли проблемы с использованием их в сочетании с файлом пакета.

3 ответов


вы можете переопределить его с помощью setParam:

msdeploy.exe
    -source:package='package.zip' 
    -dest:auto,computerName="ServerName",includeAcls="False" 
    -verb:sync 
    -disableLink:AppPoolExtension 
    -disableLink:ContentExtension 
    -disableLink:CertificateExtension 
    -setParamFile:"package.SetParameters.xml"
    -setParam:name="IIS Web Application Name",value="site name"

сделать то же самое в PowerShell (см. ответ Ричарда Салая), вы должны быть немного осторожны с обработкой аргументов командной строки - особенно там, где задействованы пробелы. Я считаю, что лучше всего передать их как массив, где нужные аргументы командной строки эффективно разделены на символ пробела. Обратите внимание, что строки ниже разделены запятыми, а также что имя параметра "IIS Web Application" разделено. Я оставил это на одной линии для улучшения. удобочитаемость.

$msdeploy = "C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy.exe";

$msdeployArguments = 
    '-source:package="package.zip"',
    '-dest:auto,computerName="<ServerName>",includeAcls="False"',
    '-verb:sync',
    '-disableLink:AppPoolExtension',
    '-disableLink:ContentExtension',
    '-disableLink:CertificateExtension',
    '-setParam:name="IIS', 'Web', 'Application', 'Name",value="<WebsiteName>"'

& $msdeploy $msdeployArguments

обновление

у меня были проблемы, когда я вернулся к параметризации имени веб-сайта. Поскольку я использовал одинарные кавычки для строк, я решил использовать конкатенацию, а не строку интерполяции. К сожалению, запятые, которые разделяли элементы в массиве, по-видимому, были оценены до конкатенации. В результате вместо конкатенации строк в элементе массива я конкатенировал новые элементы массива. Мое решение состояло в том, чтобы использовать круглые скобки для окружения элемента массива и заставить конкатенацию выполняться первой.

$msdeployArguments = 
    '-source:package="package.zip"',
    ('-dest:auto,computerName="' + $webServerName + '",includeAcls="True"'),
    '-verb:sync',
    '-disableLink:AppPoolExtension',
    '-disableLink:ContentExtension',
    '-disableLink:CertificateExtension',
    '-setParam:name="IIS', 'Web', 'Application', ('Name",value="' + $websiteName + '"');

Я пробовал все ответы здесь (и в основном все ответы из интернета) ни один из них не работал для меня. Не знаю почему. Затем я нашел этой страница, которая объясняет, как использовать MSDeploy для резервного копирования (я только что отменил его для развертывания). Тайная душа - это"contentPath". Это немного вводит в заблуждение, потому что в этом случае не путь на диске (однако я видел примеры, которые использовали его для передачи в физическом пути размещенного сайта). но я не хотел использовать физический путь. А тебе и не нужно! Фокус в том, чтобы:он может содержать веб-сайт или дочерний сайт (в IIS yoursite.com/shop, поэтому я думаю,что это путь в IIS) имя.

использование для резервного копирования:

msdeploy –verb:sync -source:contentPath="yoursite.com" -dest:package=c:\Backups\yoursite.zip

использование для развертывания:

msdeploy –verb:sync -source:package=c:\Deployment\yoursite.zip -dest:contentPath="yoursite.com"

я тратил почти день с declareParam, setParam и т. д... Однако это так просто!

надеюсь, что это помогает...