0

我在 Jenkins 中创建了一个我刚刚设置的自由式工作(最新版本)。

我给它添加了参数。其中之一是具有暂存和发布选项的 ReleaseType 选项选择。

构建步骤之一是在将站点上传到服务器时在服务器上执行远程命令。它使用执行 Windows 批处理命令构建步骤。

这是命令行(通用的东西):

sexec myuser@mysite.com -pw=mypassword -cmd="PowerShell -Command ""C:\batch\bvCopyFast.ps1 C:\inetpub\mysite${ReleaseType}\siteLoad C:\inetpub\mysite${ReleaseType}\site""

基本上,我正在执行一个 powershell 命令,该命令使用 Robocopy 将文件从上传文件夹复制到站点的实际发布文件夹。

如您所见,我需要将 ${ReleaseType} 替换为实际值。问题是,当它被执行时,它并没有进行替换。我只是在命令中使用该字面值,但这不起作用。

4

1 回答 1

0

如果您使用 -Command 参数,则意味着您将在后面的引号之间编写原始 PowerShell 代码(允许您可以调用脚本)。

PowerShell -Command "Get-Date; pause;"

要调用 PowerShell 脚本文件,您应该使用:

PowerShell -File "Your-Script.ps1 -Parameter1 Argument1 -Parameter2 Argument2"

https://docs.microsoft.com/en-us/powershell/scripting/components/console/powershell.exe-command-line-help?view=powershell-6

我会编写一个 PowerShell 脚本,它接受你的根路径和 releaseType 作为参数并执行它。

Param($rootPath,$releaseType)
{
   robocopy "$($rootPath)\$($releaseType)\siteLoad" "$($rootPath)\$($releaseType)\site"  
}

我从未使用过 Jenkins,所以我希望它能按我的预期工作!

sexec myuser@mysite.com -pw=mypassword -cmd=""PowerShell -File 'C:\batch\newScript.ps1' -RootPath 'c:\inetpub\mysite' -ReleaseType {ReleaseType}""
于 2019-01-17T19:15:47.817 回答