我正在使用 powershell 来获取 Microsoft Azure 环境的使用报告。
要定义开始和结束时间,我使用以下内容:
$reportedStartTime = (Get-Date -day 1 -hour 0 -minute 0 -second 0)
$reportedEndTime = (Get-Date -hour 0 -minute 0 -second 0)
IF($reportedEndTime -eq $reportedStartTime)
{
$reportedStartTime = ($reportedStartTime).AddMonths(-1)
}
然后我运行:
Get-UsageAggregates -ReportedStartTime $reportedStartTime -ReportedEndTime $reportedEndTime
但我收到以下错误:
Get-UsageAggregates :
InvalidInput: The reportedstarttime for daily aggregation granularity
must have the time set to midnight (0:00:00Z).
但是,如果我调用变量$reportedStartTime
并复制粘贴输出:
Get-UsageAggregates -ReportedStartTime "01 September 2016 00:00:00" -ReportedEndTime "01 October 2016 00:00:00"
它有效......
这里发生了什么?
根据您的描述,我想我们可以使用这个脚本来获取使用报告:
这是我的结果:
使用情况报告
如果您仍有疑问,欢迎在此处回复。谢谢。
在内部,.net DateTime 类型有一个“Kind”属性,该属性设置为您在创建 DateTime 时所在的时区。你需要这个“种类”是 UTC。
在 .net 中,我确实喜欢这个 DateTime.UtcNow.Date 来获取今天的 UTC。
(是的,我知道问题是 powershell - 我只是在解释为什么我认为它失败了 - 然后一个 powershell 精明的人可以说出如何在 powershell 中完成这个)