如果我在本地运行此powershell代码:
$url = "refs/pull/5625/merge"
$SourceBranchFromBuild = $url.split('/')[-1]
$featureReleaseUrl = "http://$sourceBranchFromBuild.azurewebsites.net"
Write-Output $featureReleaseUrl
输出为:
当我在Azure Powershell上运行此代码时:
$url = "refs/pull/5625/merge"
$SourceBranchFromBuild = $url.split('/')[-1]
Write-Host "##vso[task.setvariable variable=prSourceBranchName;]"$SourceBranchFromBuild
然后在另一个Azure Powershell脚本中创建URL:
$featureReleaseUrl = "http://$env:prSourceBranchName.azurewebsites.net"
Write-Output $featureReleaseUrl
输出是
http:// merge.azurewebsites.net
是什么原因导致$env:prSourceBranchName
中出现此前导空格字符?
答案 0 :(得分:1)
Azure没有添加任何内容-您的写主机是!
您的代码正在执行此操作:
PS> $x = "xxx"
PS> write-host "aaa"$x
aaa xxx
但可能您想要
PS> $x = "xxx"
PS> write-host "aaa$x"
aaaxxx
请注意,在两个示例中第二个引号都是write-host
。首先,它在$x
变量名之前。在第二个之后。
在您的问题中称呼它(在变量名称前加引号 ):
Write-Host "##vso[task.setvariable variable=prSourceBranchName;]"$SourceBranchFromBuild
这会将logging command写入日志文件,Azure DevOps将对其进行处理并更新环境变量。
您可能希望它将 this 写入日志文件:
##vso[task.setvariable variable=prSourceBranchName;]merge
但是它实际上是在写 this :
##vso[task.setvariable variable=prSourceBranchName;] merge
尝试将代码切换为此(即变量名后第二个引号 ):
Write-Host "##vso[task.setvariable variable=prSourceBranchName;]$SourceBranchFromBuild"
,并且应该在您的网址中省略分支名称前面的空格。
答案 1 :(得分:0)
@PeterBoomsma尝试将$ SourceBranchFromBuild放在这样的双引号中:
Write-Host "##vso[task.setvariable variable=prSourceBranchName;]$SourceBranchFromBuild"