来自Powershell的MSBuild
我正在尝试从MSBuild(从Powershell)运行同步,其中还包括预同步命令 我无法获得正确的命令。我尝试了多种方法,但最后一种方法是:来自Powershell的MSBuild,powershell,msbuild,Powershell,Msbuild,我正在尝试从MSBuild(从Powershell)运行同步,其中还包括预同步命令 我无法获得正确的命令。我尝试了多种方法,但最后一种方法是: [string[]]$msdeployArgs = @( "-verb:sync", "-preSync:runCommand='$preSyncCommand',waitInterval=30000", "-source:dirPath=$sourceFolder", "-dest:computerName=$serverName,us
[string[]]$msdeployArgs = @(
"-verb:sync",
"-preSync:runCommand='$preSyncCommand',waitInterval=30000",
"-source:dirPath=$sourceFolder",
"-dest:computerName=$serverName,userName=$username,password=$password,authType=basic,dirPath=$serviceFolder",
"-postSync:runCommand=$postSyncCommand,waitInterval=30000"
)
& "C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy.exe" $msdeployArgs
我得到以下错误
错误:无法识别的参数
“-preSync:runCommand='F:\Projects\released\Release\u Scripts\WindowsServices\deploytopshelfserviceceprecommands.cmd
释放的.Maintenance.JobScheduler
C:\MyCompany\Services\MyCompany.Maintenance.JobScheduler',waitInterval=30000“。
所有参数必须以“-”开头
请注意,在PreSyncCommand之后,是我想要传递给CMD文件的参数(以便它知道从何处卸载现有服务等)
我已经通过EchoArgs.exe运行了该参数,参数正常
如果有问题(可能),我正在运行TeamCity的powershell脚本。我发现了问题所在。事实证明,问题不在于powershell,而在于MSDeploy。据我所知,MSDeploy不允许您传递带有参数的批处理文件。删除参数可以正常工作(但是您需要在批处理文件中对它们进行硬编码,或者想出其他方法动态生成bat文件)。可能是引用问题?您可以尝试使用
“$preSyncCommand”
找到问题。我将添加它作为答案。