Я использую 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).
Однако, если я вызываю переменную $ reportStartTime
и просто копирую вставьте вывод:
Get-UsageAggregates -ReportedStartTime "01 сентября 2016 00:00:00" -ReportedEndTime "01 октября 2016 00:00:00"
Работает ...
Что здесь происходит?
Согласно вашему описанию, я думаю, мы можем использовать этот скрипт для получения отчета об использовании:
$reportedStartTime = (Get-Date -day 1 -hour 0 -minute 0 -second 0).datetime
$reportedEndTime = (Get-Date -hour 0 -minute 0 -second 0).datetime
IF($reportedEndTime -eq $reportedStartTime)
{
$reportedStartTime = ($reportedStartTime).AddMonths(-1)
}
Get-UsageAggregates -ReportedStartTime $reportedStartTime -ReportedEndTime $reportedEndTime
Вот мой результат:
Отчет об использовании
Если у вас все еще есть вопросы , добро пожаловать, чтобы написать здесь. Спасибо.
Внутренне тип .net DateTime имеет свойство «Kind», которое устанавливается на часовой пояс, в котором вы находитесь при создании DateTime. Вам нужно, чтобы это "Kind" было UTC.
В .net мне нравится этот DateTime.UtcNow.Date, чтобы получить UTC сегодня.
(Да, я знаю, что вопрос в PowerShell - я просто объясняю, почему я так думаю терпит неудачу - тогда знающий PowerShell человек может сказать, как это сделать в PowerShell)