Ответ 1
Это вызвано функцией автоматического отключения символа Convertto-Json
и влияет на несколько символов, таких как <>\'&
ConvertFrom-Json правильно прочитает экранированные символы. Используя ваш пример:
PS C:\> {"Password\u0026123"} | ConvertFrom-Json
Password&123
И ваш примерный код приводит к файлу с экранированными символами, но ConvertFrom-Json
может прочитать его обратно к исходным паролям. См. Ниже:
PS C:\> (Get-Content .\example.json -Encoding Ascii) -join "`n" | ConvertFrom-Json
Server1 Server2
------- -------
@{username=root; password=Password&dfdf} @{username=admin; password=Password&1234}
PS C:\> (Get-Content .\new.json -Encoding Ascii) -join "`n" | ConvertFrom-Json
Server1 Server2
------- -------
@{username=root; password=Password&dfdf} @{username=admin; password=Password&1234}
Если вам понадобятся пароли, которые не сохранены, может потребоваться некоторая оптимизация. См. Эту тему о Преобразование строк Unicode в экранированные строки ascii
В качестве альтернативы, если возможно, избегайте затронутых символов.