1

我从 Json.ps1(下)创建了一个简单的 PowerShell 脚本:

param([string]$Jstring, [string]$JColumn)
$val = $Jstring | out-string | ConvertFrom-Json | select $Jcolumn
$val | format-table -auto

现在我正在尝试使用以下方法解析一些示例 JSON,但它失败并出现“无效 JSON 原语”错误。我直接从命令提示符运行它并调用powershell.exe

c:\powershell>PowerShell.exe ./FromJson.ps1 '{"username":"","uid":"","contextid":8651,"partnerEntID":0}' "contextid"

错误 :

ConvertFrom-Json : Invalid JSON primitive: . At
C:\SCRIPTS\PowerShell\FromJson.ps1:2 char:32
+ $val = $Jstring | out-string | ConvertFrom-Json | select $Jcolumn
+                                ~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [ConvertFrom-Json], ArgumentException
    + FullyQualifiedErrorId : System.ArgumentException,Microsoft.PowerShell.Commands.ConvertFromJsonCommand

虽然如果我在 powershell 提示符下运行它,同样的工作绝对没问题。

PS C:\PowerShell> ./FromJson.ps1 '{"username":"","uid":"","contextid":8651,"partnerEntID":0}' "contextid"

有人遇到这个问题并解决了吗?谢谢,新泽西州

4

1 回答 1

0

cmd 解析器处理引号的方式与 PowerShell 解析器不同。使用以下命令在 cmd 中获得相同的结果。

powershell "& {./FromJson.ps1 '{\"username\":\"\",\"uid\":\"\",\"contextid\":8651,\"partnerEntID\":0}' \"contextid\"}"

史蒂夫

于 2013-08-20T20:46:26.517 回答