VSTS版本,CMD webdeploy与Powershell引用语法内的变量

VSTS版本,CMD webdeploy与Powershell引用语法内的变量

问题描述:

如果这是愚蠢和明显的道歉。我已经在Powershell的脚本以下行执行如在VSTS释放任务:VSTS版本,CMD webdeploy与Powershell引用语法内的变量

Write-Output "Stopping IIS..." 
CMD.exe /C "'C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe' -verb:sync -source:recycleApp -dest:recycleApp='MyApp/MyAppPool',recycleMode='StopAppPool',computername=$privateIp,userName=$serverLogin,password=$serverPassword" 

它产生以下输出:

2017-10-07T15:07:33.3282985Z Stopping IIS... 
2017-10-07T15:07:34.5470804Z ##[error]The filename, directory name, or volume label syntax is incorrect 

每MS(https://technet.microsoft.com/en-us/library/cc956689.aspx),这意味着以下字符中的一个是错误:\ \/[]:| <> +; =。 ? “

我只能假定它是我的报价语法,因为这是这行上唯一使用的字符,我知道它不是任何变量的内容,因为它们在脚本中的其他地方使用, 。?吨包含任何问题的字符)的

帮助

+0

那么你能不能打印你的字符串,并检查构造? – 4c74356b41

+0

@ 4c74356b41 Err ...我该怎么做? –

+0

创建一个变量来保存命令行字符串,然后将其写入主机 –

大量的试验和错误之后,我想通了答案:

CMD.exe /C "`"C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe`" -verb:sync -source:recycleApp -dest:recycleApp='MySite/MySiteAppPool',recycleMode='StopAppPool',computername=$privateIp,userName=$serverLogin,password=$serverPassword" 

只是给后人记,这是专门这是一种当你尝试时会起作用的语法使用msdeploy作为VSTS中的发布任务,从Powershell脚本停止/启动/回收网络上的服务器上的应用程序池。