Azure DevOps YAML 给获取的当前时间加12小时的正确语法是什么
问题结论
你当前的写法是错误的,无法得到预期结果,有两个核心问题:
- Azure DevOps的YAML顶层
variables块不支持直接执行PowerShell命令,你写的$(Get-Date -Format "yyyy-MM-dd HH:mm:ss")会被识别为普通字符串,而非执行命令后的时间结果 - 就算
CurrentTime成功拿到了时间值,也是格式化后的字符串类型,没有addHours方法,无法直接调用该方法做时间运算
正确实现语法
你需要通过PowerShell步骤生成时间值,再设置为Azure DevOps管道变量,后续步骤就可以直接引用这两个变量:
jobs: - job: CalculateTime steps: - task: PowerShell@2 inputs: targetType: 'inline' script: | # 生成DateTime对象,避免字符串转义问题 $currentTime = Get-Date $startTime = $currentTime.AddHours(12) # 格式化后输出为管道变量,作用域为当前作业所有后续步骤 Write-Host "##vso[task.setvariable variable=CurrentTime]$($currentTime.ToString('yyyy-MM-dd HH:mm:ss'))" Write-Host "##vso[task.setvariable variable=StartTime]$($startTime.ToString('yyyy-MM-dd HH:mm:ss'))" # 后续步骤可直接引用变量 - script: echo 当前时间是 $(CurrentTime),加12小时后的时间是 $(StartTime)
如果你需要跨作业使用这两个变量,给变量添加isOutput=true标识后按跨作业变量规则引用即可。
内容的提问来源于stack exchange,提问作者wonderfulworldwithcharity
相关产品推荐
相关产品推荐

