Я пытаюсь написать скрипт powershell, который извлекает некоторые данные из NetBackup.Одной из точек данных является дата начала резервного копирования, но NetBackup выводит ее в формате Unix (я полагаю, что это число секунд с 01.01.1970).
У меня работает раздел извлечения.Я могу преобразовать строку даты в пригодный для использования формат, используя функцию, которую я нашел в Интернете.Я борюсь с тем, чтобы вернуть исправленную дату обратно в исходный массив.
Итак, $ BackupResults - это извлечение из NetBackup:
Пример
Статус запуска Jobid
----- ------- ------
330447 1562743826 0
330446 1562743557 191
330445 1562743556 191
Я тогда объявилпреобразовать функцию и запустить цикл foreach для результатов, поместив результаты в $ CorrectedDates.Чего я не могу понять, так это как добавить это обратно в исходный массив - либо путем объединения массивов, либо просто записав результат прямо в массив $ BackupResults.
$CorrectedDates = New-Object System.Collections.ArrayList
$BackupResults = Get-NetBackupJob -Full | Select-Object jobid,started,status
Function Convert-FromUnixDate ($UnixDate) {
[timezone]::CurrentTimeZone.ToLocalTime(([datetime]'1/1/1970').AddSeconds($UnixDate))
}
Foreach ($BackupResult in $BackupResults)
{
$OutDate = Convert-FromUnixDate $BackupResult.started
[void]$CorrectedDates.add($OutDate)
}
$BackupResults = New-Object psobject
$BackupResults | add-member -name Date -type noteproperty -Value $CorrectedDates
Версия вышеработает без ошибок, но $ BackupResults заканчивается строкой с исправленными датами, а не с исправленными датами, добавленными к каждой строке в исходных данных:
{10/07/2019 08:45:57, 10/07/2019 08:45:57, 10/07/2019 08:45:57, 10/07/2019 08:30:26...}
Что мне нужно, так это исходный $ BackupResults изно с дополнительным столбцом с каждой датой Unix, преобразованной в человеческую дату (не важно, как называется выходной массив).Затем он будет использоваться для настройки какого-либо мониторинга.
РЕДАКТИРОВАТЬ:
Не уверен, что мне разрешено повторно открывать запрос, но начать заново будет сложно, так как я хотел бы расширитьисходный вопрос.
Я сейчас пытаюсь отфильтровать результаты перед выводом.В частности, я хочу получить результаты только в том случае, если отметка даты находится в течение последних 24 часов, а возвращенный код состояния равен 2. Я предполагаю, что мне нужно использовать .AddDays (-1) где-то в строке 18 л, но я не могу найтиместо, где это действительно?И как мне отфильтровать вывод строки состояния?