Преобразование времени эпохи в удобочитаемое время в выходных данных Powershell 'ConvertTo-Json'
Powershell автоматически преобразует все поля даты и времени во время эпохи при использовании ConvertTo-Json. Есть ли способ предотвратить это или изменить его обратно на удобочитаемую дату и время? Например, проверьте некоторые поля в выводе
Команда:
Get-LocalUser | ConvertTo-Json
Выход:
"PasswordChangeableDate": "\/Date(1597311158786)\/",
"PasswordExpires": null,
"UserMayChangePassword": true,
"PasswordRequired": true,
"PasswordLastSet": "\/Date(1597224758786)\/",
"LastLogon": "\/Date(1597238163431)\/",
Есть ли способ запретить Powershell преобразовывать указанные выше поля во время эпохи или обратно в удобочитаемую дату и время?
1 ответ
Я подозреваю, что вы используете Powershell 5 версии. В Powershell 5ConvertTo-Json
командлет реализован с помощью
JavaScriptSerializer
класс . См. Эту таблицу, чтобы узнать о сопоставлении между управляемыми типами и эквивалентом JSON.
Одно из решений, которое я мог придумать, - это преобразовать дату в строку (используя
ToString()
) перед сериализацией в JSON или обновлением до Powershell 7 :) . Это связано с тем, что PowerShell 7 использует Newtonsoft Json.NET под капотом, а формат по умолчанию, используемый Json.NET, - это стандарт ISO 8601 :
"2012-03-19T07:22Z"
.