1

Json.ps1 から単純な PowerShell スクリプトを 1 つ作成しました(以下)。

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 に答える