You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修改Azure DevOps脚本时间戳格式以适配PowerBI

问题:Azure DevOps脚本生成的嵌套时间戳导致PowerBI导入失败

我用Azure DevOps脚本采集数据时,通过Get-Date生成的TimeStamp字段在导出JSON后呈现嵌套结构(包含value、DisplayHint、DateTime子字段),将该JSON导入PowerBI时触发报错。需要把TimeStamp转换为ISO 8601标准格式(示例:"2022-08-08T19:00:53.0907571-05:00")。

相关代码片段:

try {
$projectsDataArray = getProjects| ForEach-Object {
    @{ 
        TimeStamp = Get-Date
        ProjectMeta = processProject($_)
    }
}
#****遍历获取每个定义的ID
$projectsDataArray | ConvertTo-Json -Depth 8 | Set-Content C:\Users\60085367\Documents\Proyecto3ApiDevOps\NuevaPrueba\devopsmetaFinal.json
}
catch {
Write-Output $_
}
解决方案

问题根源是Get-Date默认返回DateTime对象,ConvertTo-Json会将其序列化为嵌套结构。只需让Get-Date直接输出ISO 8601格式的字符串即可,有两种简便实现方式:

方式1:使用内置格式符快速生成

PowerShell的Get-Date支持用-Format o参数直接输出ISO 8601标准格式的字符串,修改TimeStamp赋值语句即可:

try {
$projectsDataArray = getProjects| ForEach-Object {
    @{ 
        TimeStamp = Get-Date -Format o
        ProjectMeta = processProject($_)
    }
}
#****遍历获取每个定义的ID
$projectsDataArray | ConvertTo-Json -Depth 8 | Set-Content C:\Users\60085367\Documents\Proyecto3ApiDevOps\NuevaPrueba\devopsmetaFinal.json
}
catch {
Write-Output $_
}

方式2:自定义格式字符串(灵活控制)

如果需要更精细的格式控制,可以调用DateTime对象的ToString()方法,指定完整的ISO 8601格式模板:

TimeStamp = (Get-Date).ToString("yyyy-MM-ddTHH:mm:ss.fffffffzzz")

若需要UTC时间格式(带Z后缀),可转换为UTC时间后再输出:

TimeStamp = (Get-Date).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss.fffffffZ")

修改后导出的JSON中,TimeStamp会是标准的字符串格式,PowerBI可直接识别,不会再因嵌套结构报错。

内容的提问来源于stack exchange,提问作者Alberto Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 16:31:15