Ошибка Powershell ConvertFrom-Json

Я создал один простой скрипт PowerShell fromJson.ps1 (ниже):

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"

Кто-то сталкивался с этой проблемой и решил ее? Спасибо, Нью-Джерси.


person user1679411    schedule 14.08.2013    source источник


Ответы (1)


Парсер cmd обрабатывает кавычки иначе, чем парсер PowerShell. Используйте следующее, чтобы получить те же результаты в cmd.

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

Стив

person stevlars    schedule 20.08.2013