Преобразование времени эпохи в удобочитаемое время в выходных данных 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".

Другие вопросы по тегам