问题描述
我有一个Powershell脚本,它会生成一个包含数据的JSON文件。
你知道我该怎么解决吗?
[ordered]@{
pcname='ENTER HERE';
share='\\ENTER HERE\C$';
filename='ENTER HERE';
destfilepath='some\folder';
destfile='$in.share\$in.destfilepath\$in.filename';
RDdestfile='C:\$in.destfilepath\';
Username="ENTER HERE";
Password="ENTER HERE";
EncryptedPassword=""
} | ConvertTo-Json | Out-File "$secFile"
$ secFile只是将文件保存到的路径。告诉我您是否也需要它。
{
"pcname": "ENTER HERE","share": "\\\\ENTER HERE\\C$","filename": "ENTER HERE","destfilepath": "some\\folder","destfile": "$in.share\\$in.destfilepath\\$in.filename","RDdestfile": "C:\\$in.destfilepath\\","Username": "ENTER HERE","Password": "ENTER HERE","EncryptedPassword": ""
}
问候
马丁
编辑:我也将这个问题发布在PowerShell.org论坛和Microsoft Tech Community中,只是您知道
https://powershell.org/forums/topic/why-does-my-generated-json-have-too-many/
解决方法
这是您所拥有内容的反斜杠的正确数目。
在JSON字符串中,反斜杠(\
)需要与另一个反斜杠(\\
)转义。
有一种转义JSON的方法:
[ordered]@{
pcname='ENTER HERE';
share='\\ENTER HERE\C$';
filename='ENTER HERE';
destfilepath='some\folder';
destfile='$in.share\$in.destfilepath\$in.filename';
RDdestfile='C:\$in.destfilepath\';
Username="ENTER HERE";
Password="ENTER HERE";
EncryptedPassword=""
} | ConvertTo-Json | Foreach {[System.Text.RegularExpressions.Regex]::Unescape($_)} | Out-File "$secFile"
这将使反斜杠转义。输出:
{
"pcname": "ENTER HERE","share": "\\ENTER HERE\C$","filename": "ENTER HERE","destfilepath": "some\folder","destfile": "$in.share\$in.destfilepath\$in.filename","RDdestfile": "C:\$in.destfilepath\","Username": "ENTER HERE","Password": "ENTER HERE","EncryptedPassword": ""
}