如何在 tfs 2015 中的目标机器任务的 powershell 中读取具有特殊字符、空格等的会话变量

how to read the session variables with special chars, spaces ect in powershell on target machine task in tfs 2015

我们今天在部署中使用发布管理 (client/server),我们有基于代理和 vNext 发布的模板,我们有负责这些部署的 powershell 代码。现在,我们正在迁移到 tfs 2015 中的版本管理的 Web 版本,我们想使用“目标机器上的 powershell”任务来调用我们的基本脚本(然后导入其他 PS 模块)来负责部署. 我们面临的问题是变量,我们需要将大量变量传递给我们的代码,然后这些变量将在我们的配置文件中进行转换和替换。这些变量有特殊字符和 spaces 等,当我们在会话变量中传递这些变量时,由于 spl char 或 space 等,部署失败 有没有一种方法可以将变量传递给我们的代码而不会失败。

我们在我们的版本中添加了一个内联 powershell 任务,它将所有变量添加到一个 xml 文件中,这个文件将位于构建服务器上,然后我们添加 windows 文件副本将此文件移动到目标服务器的任务 目标机器上的另一个任务 powershell 调用我们的基本脚本,我们在其中更新以从 xml 文件中读取变量。 但问题是我们最终在发布中添加了 4 个任务来处理发布管理中的一个组件,并且我们的一些发布非常复杂,我们有大约 20 个组件,如果我们必须将其迁移到基于 Web 的发布管理我们必须添加大约 80 个步骤,这会增加很多混乱。 有更好的方法吗? 如果我有任何意义或需要更多详细信息,请告诉我 Variables screeshot

附上我试图在目标机器任务上传递给 powershell 中的会话变量的变量的屏幕截图。 这些变量中有“=”,当这些变量传递给任务时,我收到以下错误“2019-02-11T17:11:19.9812595Z ##[error]运行 命令停止,因为首选项变量” ErrorActionPreference”或公共参数设置为 Stop:找到值 'Source' 没有相应的键“

我们走错了方向,通过会话变量读取变量 我们发现有一个 api 使所有发布变量都可用。

https://{tfsurl}/{collection}/{project}/_apis/release/releases/{releaseId}?api-version=3.0-preview .1

然后我们更新了代码以根据环境获取变量