powershell - 在无代理作业中运行脚本
问题描述
我正在尝试在 Azure DevOps 中为 Web 应用程序设置部署管道。作为此过程的一部分,我需要向 API 发出 POST,以便与我们的监控服务提供商创建维护窗口,以便维护我们的 Web 应用程序的 SLA。为了为此 API 请求创建 JSON 有效负载,我需要知道维护窗口开始和结束的确切日期/时间。
到目前为止,我有一个 PowerShell 任务设置来运行代理作业,以便在正确的时区中获取时间(代理和部署代理都在同一个设施/时区中)。
由于脚本的长度限制,我不得不缩写一些变量名。但这$da
只是维护窗口长度的持续时间参数。
Param([int]$da)
$df="yyyy-MM-dd"
$tf="HH:mm"
$start=(Get-Date).AddMinutes(1)
$end=$start.AddMinutes($da)
$startDate = $start.ToString($df)
$startTime=$start.ToString($tf)
$endDate=$end.ToString($df)
$endTime=$end.ToString($tf)
Write-Host "##vso[task.setvariable variable=startDate]$startDate"
Write-Host "##vso[task.setvariable variable=startTime]$startTime"
Write-Host "##vso[task.setvariable variable=endDate]$endDate"
Write-Host "##vso[task.setvariable variable=endTime]$endTime"
这工作正常,我可以通过使用新的 PowerShell 任务在同一作业中立即运行来验证变量是否设置正确
Write-Host $env:startDate
Write-Host $env:startTime
Write-Host $env:endDate
Write-Host $env:endTime
但是,当我尝试在无代理作业的 Invoke REST API 任务中使用这些变量时,它们显示为空。我现在发出这个postman-echo.com
来验证我的有效载荷。
{
display_name:"$(Release.ReleaseName)",
description:"Deployment requested by $(Release.RequestedFor)",
start_date:"$(startDate)",
start_time:"$(startTime)",
end_date:"$(endDate)",
end_time:"$(endTime)"
}
看起来变量在作业之间不会持续存在。话虽如此,考虑到 PowerShell 脚本任务在无代理作业中不可用,并且 Invoke REST API 任务仅在无代理作业中可用,我该如何实现我的目标?我需要一种在无代理作业中运行脚本的方法来为我的部署过程生成日期/时间
解决方案
推荐阅读
- r - 在数据表中使用按钮功能时如何删除扩展文件名?
- java - 当我创建一个舞台时,它不允许我在 libgdx 中绘制精灵
- javascript - 商品不会从购物车中删除——香草 javascript
- sql - 不正确的字符串值:'\x9C\x94\xBAw4\x9C...' 列 'pic_byte' 在第 1 行错误
- python - Beam Kafka 流输入,无输出打印或文本
- java - 我应该如何在 Spring 中返回响应实体
- fabricjs - Fabric JS在图像容器内移动图像
- vega - 如何从 Vega 回归变换中获取系数?
- macos - 可以在 Visual Studio for Mac 中显示光标行和列吗?
- c# - 我应该在 Xamarin.Forms 上使用哪些 SQLite (sqlite-net-pcl) 标志?