Azure Release Pipeline部署报错:无法识别参数'Files\IIS\Microsoft'
尝试部署Release时,Azure DevOps触发报错。执行命令如下:
2023-01-19T17:33:45.9017207Z [command]"C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync -source:package='D:\a\r1\a\Robbu.Custom.Ed.API\drop\robbu-custom-ed.zip' -dest:auto,ComputerName='https://robbu-custom-ed-beta.scm.azurewebsites.net:443/msdeploy.axd?site=robbu-custom-ed',UserName='$robbu-custom-ed__beta',Password='***',AuthType='Basic' -setParam:name='IIS Web Application Name',value='robbu-custom-ed' -enableRule:AppOffline -retryAttempts:6 -retryInterval:10000 -enableRule:DoNotDeleteRule -userAgent:VSTS_4fdfceed-ee54-490c-90de-9dadb1252143_Release__521_859_4
报错信息:
2023-01-19T17:33:46.0034276Z ##[error]Error: Error: Unrecognized argument 'Files\IIS\Microsoft'. All arguments must begin with "-".
未修改任何Release设置,请问错误原因是什么?
这个错误的核心是msdeploy.exe的路径包含空格,但命令解析时未正确处理带空格的路径。
虽然命令里给路径套了双引号,但Azure DevOps的[command]标记在解析命令时可能出现引号处理异常,导致路径被拆分成C:\Program和Files\IIS\Microsoft Web Deploy V3\msdeploy.exe两部分。其中Files\IIS\Microsoft被当成了独立的命令参数,不符合msdeploy要求所有参数必须以"-"开头的规则,因此触发报错。
即使你没修改Release设置,以下代理端的环境变化也可能引发这个问题:
- Azure DevOps代理的环境变量配置发生变更
- Web Deploy更新后安装路径结构被修改
- 代理机器上的命令行工具(如cmd/PowerShell)默认解析行为被更改
内容的提问来源于stack exchange,提问作者Vinícius Mendonça

