如何将已解析的 json 文件从 json 转换回 json?
How can I convert a parsed json file from json then back to json?
我正在使用 powershell ConvertTo-Json 生成已解析的 JSON 文件。
到这里为止一切都很好,因为现在我想将它从 json 转换,使用这些值,然后使用它们之前的值将其转换回 json。
但是当我将文件转换回 json 时,它只显示空值...
有什么办法可以解决吗?
这是我创建解析文件的代码:
$secFile = "C:\some\folder\creds.json"
$in = Get-Content $secFile | ConvertFrom-Json
[ordered]@{
pcname='ENTER HERE';
share='\$in.pcname\C$';
filename='ENTER HERE';
destfilepath='Scripts\Cert';
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"
这是将文件转换回 json 的代码:
[ordered]@{
pcname=$in.pcname;
share=$in.share;
filename=$in.filename;
destfilepath=$in.destfilepath;
destfile=$in.destfile;
RDdestfile=$in.RDdestfile;
Username=$in.Username;
Password="";
EncryptedPassword="$secString"
} | ConvertTo-Json | Out-File "$secFile"
这是转换回 json 后的文件:
{
"pcname": null,
"share": null,
"filename": null,
"destfilepath": null,
"destfile": null,
"RDdestfile": null,
"Username": null,
"Password": "",
"EncryptedPassword": "01000000d08c9ddf0115d1118c7a00c04fc297eb010000006f6d3ce161a681428efe68b51827a6640000000002000000000003660000c0000000100000002a6a1ff60cb280662a9578cb47926a4d0000000004800000a000000010000000a65a1cd7137935dbfcd22bcdc685f52a20000000b87554b4f6f6dbe655cd525a894e1c7d1180b4db121385e57b218fa772ad1d441400000048453bb6e137ed437de3e4ecbd855429ddfc1fba"
}
这在我解析文件之前起作用了。所以这不可能是错误,对吧?
我既不是 powershell 也不是 json 专业人士,所以我真的希望得到很好的帮助
你好
马丁
如果我以你的例子为例,导出并重新导入,我会得到一个错误。
[pscustomobject]@{
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 -OutVariable results |
Foreach {[System.Text.RegularExpressions.Regex]::Unescape($_)} |
Out-File $secFile
Get-Content $secFile | Convertfrom-json
错误
At line:14 char:28
+ Get-Content $secFile | Convertfrom-json
+ ~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [ConvertFrom-Json], ArgumentException
+ FullyQualifiedErrorId : System.ArgumentException,Microsoft.PowerShell.Commands.ConvertFromJsonCommand
但是,如果我简单地删除正则表达式转义,它就可以正常工作。
[pscustomobject]@{
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 -OutVariable results| Out-File $secFile
Get-Content $secFile | Convertfrom-json
输出
pcname : ENTER HERE
share : \ENTER HERE\C$
filename : ENTER HERE
destfilepath : some\folder
RDdestfile : C:$in.destfilepath\
Username : ENTER HERE
Password : ENTER HERE
EncryptedPassword :
这是必需的吗?
我正在使用 powershell ConvertTo-Json 生成已解析的 JSON 文件。 到这里为止一切都很好,因为现在我想将它从 json 转换,使用这些值,然后使用它们之前的值将其转换回 json。 但是当我将文件转换回 json 时,它只显示空值... 有什么办法可以解决吗?
这是我创建解析文件的代码:
$secFile = "C:\some\folder\creds.json"
$in = Get-Content $secFile | ConvertFrom-Json
[ordered]@{
pcname='ENTER HERE';
share='\$in.pcname\C$';
filename='ENTER HERE';
destfilepath='Scripts\Cert';
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"
这是将文件转换回 json 的代码:
[ordered]@{
pcname=$in.pcname;
share=$in.share;
filename=$in.filename;
destfilepath=$in.destfilepath;
destfile=$in.destfile;
RDdestfile=$in.RDdestfile;
Username=$in.Username;
Password="";
EncryptedPassword="$secString"
} | ConvertTo-Json | Out-File "$secFile"
这是转换回 json 后的文件:
{
"pcname": null,
"share": null,
"filename": null,
"destfilepath": null,
"destfile": null,
"RDdestfile": null,
"Username": null,
"Password": "",
"EncryptedPassword": "01000000d08c9ddf0115d1118c7a00c04fc297eb010000006f6d3ce161a681428efe68b51827a6640000000002000000000003660000c0000000100000002a6a1ff60cb280662a9578cb47926a4d0000000004800000a000000010000000a65a1cd7137935dbfcd22bcdc685f52a20000000b87554b4f6f6dbe655cd525a894e1c7d1180b4db121385e57b218fa772ad1d441400000048453bb6e137ed437de3e4ecbd855429ddfc1fba"
}
这在我解析文件之前起作用了。所以这不可能是错误,对吧?
我既不是 powershell 也不是 json 专业人士,所以我真的希望得到很好的帮助
你好
马丁
如果我以你的例子为例,导出并重新导入,我会得到一个错误。
[pscustomobject]@{
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 -OutVariable results |
Foreach {[System.Text.RegularExpressions.Regex]::Unescape($_)} |
Out-File $secFile
Get-Content $secFile | Convertfrom-json
错误
At line:14 char:28
+ Get-Content $secFile | Convertfrom-json
+ ~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [ConvertFrom-Json], ArgumentException
+ FullyQualifiedErrorId : System.ArgumentException,Microsoft.PowerShell.Commands.ConvertFromJsonCommand
但是,如果我简单地删除正则表达式转义,它就可以正常工作。
[pscustomobject]@{
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 -OutVariable results| Out-File $secFile
Get-Content $secFile | Convertfrom-json
输出
pcname : ENTER HERE
share : \ENTER HERE\C$
filename : ENTER HERE
destfilepath : some\folder
RDdestfile : C:$in.destfilepath\
Username : ENTER HERE
Password : ENTER HERE
EncryptedPassword :
这是必需的吗?