Как преобразовать вывод SSM и формат времени unix в системное время в PowerShell для сохранения в формате CSV - PullRequest
0 голосов
/ 03 августа 2020

Я использую команду ssm для описания патчей экземпляра, при получении вывода время установки находится в неуказанном формате, поэтому как преобразовать его в формат мм / дд / гг

aws ssm describe-instance-patches --instance-id "XXXXXX" --profile "XXXXXX" --region "us-west-2"  --max-results 10 --output table 

По умолчанию вывод команды ssm: json

вывод:

|| Classification | InstalledTime | KBId | Severity | State | Title
|| CriticalUpdates | 1476770400.0 | KB3199209 | Unspecified | Installed | Update for Windows Server 2016 for x64-based Systems (KB3199209)
|| CriticalUpdates | 1479193200.0 | KB3199986 | Unspecified | Installed | Update for Windows Server 2016 for x64-based

Ответы [ 2 ]

0 голосов
/ 03 августа 2020

Этот скрипт работает как положено

    $instances= aws ssm describe-instance-patches --instance-id "xxxxxxx" --profile "xxxxxxx" --region "us-west-2"  --max-results 50
$pathToOutputFile = "C:\Users\Documents\prod_instance_us_west_2.csv"
$array = ($instances| ConvertFrom-Json) | Select-Object -ExpandProperty Patches

$report = @()
foreach($a in $array)
{
    $report += New-Object psobject -Property @{Title=$a.Title;KBId=$a.KBId;Classification=$a.Classification;Severity=$a.Severity;State=$a.State;InstalledTime=[TimeZone]::CurrentTimeZone.ToLocalTime(([datetime]'1/1/1970').AddSeconds($a.InstalledTime))}
}
$report | export-csv $pathToOutputFile
0 голосов
/ 03 августа 2020

Обновите свой вопрос выходными данными вместо изображения.

Формат даты не является неопределенным, это Unix формат.

Для преобразования из Unix в переменную DateTime выполните следующее:

$oUNIXDate=(Get-Date 01.01.1970)+([System.TimeSpan]::fromseconds(1476770400))

Я не могу это проверить, но вы, вероятно, можете сделать что-то вроде этого, чтобы впоследствии преобразовать результат:

aws ssm describe-instance-patches --instance-id "XXXXXX" --profile "XXXXXX" --region "us-west-2"  --max-results 10 --output table | select-object Classification, @{ Name = 'TimeStamp'; Expression = {  ((Get-Date 01.01.1970)+([System.TimeSpan]::fromseconds($_.InstalledTime))) }}, KBId, Severity, State, Title
...