2015-01-21 22 views
13

Chciałbym monkeypatch środowiska PowerShell 2.0, w którym uaktualnienie do wersji 3.0 nie jest w tej chwili możliwe.Implementacja PowerShell 2.0 ConvertFrom-Json i ConvertTo-Json

Poszukuję implementacji skryptu PowerShell 2.0 dla polecenia cmdlet ConvertFrom-Json i ConvertTo-Json w programie PowerShell 3.0.

Jestem bardzo zainteresowany ConvertFrom-Json, ale ConvertTo-Json również byłoby miłe.

+2

do tego, kto głosował, aby zamknąć nierozpoznany temat, rozumiem, że nie. – x0n

+2

On/Ona prawdopodobnie odczytał to jako "zamówienie scenariusza", z którym częściowo się zgadzam. Aby użyć terminologii ITIL: jest to żądanie usługi (wymaga skryptu), a nie incydent (przykład skryptu z błędami). :) –

+1

@FrodeF., Aby dodać trochę informacji o mojej prośbie, jest to z pewnością "kolejność skryptów", ponieważ nie chcę pisać wersji zgodnej z JSON. Miałem nadzieję, że istnieje zestaw, który można zaimportować i wykorzystać. Miałem nadzieję, że istnieje znane rozwiązanie problemu z makropoleceniem, a nie pisanie i debugowanie mojego nowego skryptu. Jeśli nadal jest to temat poza tematem, mogę przenieść go gdzieś indziej ... –

Odpowiedz

30
function ConvertTo-Json20([object] $item){ 
    add-type -assembly system.web.extensions 
    $ps_js=new-object system.web.script.serialization.javascriptSerializer 
    return $ps_js.Serialize($item) 
} 

function ConvertFrom-Json20([object] $item){ 
    add-type -assembly system.web.extensions 
    $ps_js=new-object system.web.script.serialization.javascriptSerializer 

    #The comma operator is the array construction operator in PowerShell 
    return ,$ps_js.DeserializeObject($item) 
} 
+4

Oto funkcja ConvertFrom, oparta na powyższym 'funkcja ConvertFrom-Json20 ([object] $ item) { add-type-assembly system.web.extensions $ ps_js = new-object system.web.script.serialization.javascriptSerializer return $ ps_js.DeserializeObject ($ pozycja) } 'Słabo sformatowany, przepraszam – Geoff

+1

Dzięki Geoff! Dodałem do odpowiedzi –

+1

Jeśli nie masz zainstalowanego .NET 3.5, pojawi się błąd:" Add-Type: Could not load file or assembly 'System .Web.Extensions, Version = 3.5.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 lub jedna z jego zależności s. System nie może odnaleźć określonego pliku. "... –

2

Można jednak spojrzeć na powershelljson.codeplex.com Nigdy jednak nie próbowałem.

Jeśli to nie zadziała, prawdopodobnie trzeba będzie napisać samemu. Możesz napisać wrapper, który używa Json.Net lub Web.Extensions (sample) do wykonania niektórych prac.

+0

Link codeplex wygląda dokładnie tak, jak potrzebuję, dzięki! BTW, spędziłem wiele godzin z Google próbując znaleźć coś podobnego, ale chciałem tylko porozmawiać o Power Shell v3 :-( –

+0

BTW, wypróbuję je jutro i zaakceptuję, czy działa –

1

jestem w stanie wypowiedzieć się na temat currently top rated post above jednak można uruchomić te polecenia rejestru (more details):

reg add hklm\software\microsoft\.netframework /v OnlyUseLatestCLR /t REG_DWORD /d 1 /f 
    reg add hklm\software\wow6432node\microsoft\.netframework /v OnlyUseLatestCLR /t REG_DWORD /d 1 /f 

aby umożliwić powyższe ConvertTo-Json20 i ConvertTo-Json20 funkcje do pracy, jeśli jesteś coraz błąd:

Add-Type : Could not load file or assembly 'System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 or one of its dependencies. The system cannot find the file specified. "