Поведение ConvertFrom-Json
изменено в PowerShell [Core] v6 + : строка значения, отформатированные с использованием стандартной даты o
(туда и обратно) / формат времени теперь преобразуются в экземпляры [datetime]
) , а не анализируются как строки - это удобный способ передачи временных меток туда и обратно через (v6 +) ConvertTo-Json
, без необходимость явного преобразования строк в / из.
Если вам нужно вернуть прежнее поведение, явно преобразуйте полученные экземпляры [datetime]
обратно в строки, используя .ToString('o')
.
Вот простой пример:
# v6+
PS> ('{ "timestamp": "2018-01-26T17:48:51.220Z" }' |
ConvertFrom-Json).timestamp.ToString('o')
2018-01-26T17:48:51.2200000Z
Существует некоторая гибкость в отношении вариантов формата входных : дробные секунды - это необязательный, и если он присутствует, количество десятичных знаков может меняться.
Напротив, формат o
всегда использует 7 знаков после запятой, что отличается от введенного вами.
- Вы можете применять произвольное форматирование на основе o n a фиксированное количество десятичных знаков, но учтите, что вы не сможете определить, сколько десятичных знаков было фактически использовано во входных .
- Например, чтобы получить 3 десятичных знака:
[datetime]::UtcNow.ToString("yyyy-MM-dd'T'HH':'mm':'ss'.'fffK")
Если вы хотите предотвратить преобразование в- [datetime]
в источнике , у вас будет использовать низкоуровневый подход - ConvertFrom-Json
не предлагает решения.