2015-12-20 7 views
5

Bardzo ... bardzo dziwny problem.Właściwość "Informacje" we właściwości Strumień instancji Powershell niedostępna kompilacja

Korzystanie VS2015 oraz .NET 4,52

opracowałem ten kod C# PowerShell jest uruchomiony skrypt i łapie wyjście. tak:

 using (PowerShell powerShellInstance = PowerShell.Create()) 
     { 
      powerShellInstance.AddScript(scriptContents); 

      Collection<PSObject> PSOutput = powerShellInstance.Invoke(); 

      if (powerShellInstance.Streams.Information.Count > 0) 
      { 

        foreach (var item in powerShellInstance.Streams.Information) 
        { 
         //do something with info 
        } 


       } 

      } 
     } 

Kompiluje i uruchamia (na komputerze z systemem Windows 10 pro), bez problemów.

Dopóki mam nową maszynę (powierzchnia Pro 4, tak też Windows 10 Pro) i starał się skompilować kod, otrzymuję ten błąd:

'PSDataStreams' does not contain a definition for 'Information' and no extension method 'Information' accepting a first argument of type 'PSDataStreams' could be found (are you missing a using directive or an assembly reference?)

To wszystko jest oparte TFS, więc jestem na pewno jest to ten sam kod.

Gdybym goto definicja na dwóch maszynach problem staje się oczywiste:

enter image description here

Więc wykomentowane kodu nie kompilacji i prowadził ją, aby zobaczyć, co się dzieje Runtime:

enter image description here

Więc nieruchomość jest tam. Czy ktoś ma dobre wytłumaczenie tego?

BTW: dokumentacja msdn nie wspomina właściwość informacji ..

+0

Czy zainstalowałeś Powershell 5 Preview na starym systemie, ale nie nowy? A może różne wersje między nimi? – alroc

+0

Nie, to jest maszyna z czystym Winem 10, tylko z zainstalowanym studiem – Flores

Odpowiedz

7

Możecie być przedstawieniu złą wersję zespołu System.Management.Automation.dll na Surface Pro.

Na moim Pro instalacji systemu Windows 10 (uaktualniony z Windows 8.1), mam dwie wersje, one in each GAC:

2 ps versions

Jeden wybrany na zdjęciu jest "stary" jeden, mieszka w starym GAC (C:\windows\assembly) i identyfikuje się z wersją pliku 6.1.7600.16385.

Drugi (który zawiera poprawną wersję PSDataStreams i naraża strumień Information) mieszka w C:\Windows\Microsoft.NET\assembly i ma wersji pliku 10.0.10240.16384 jako pisania.

+0

Huh .. Odwołuję się do C: \ Program Files (x86) \ Zestawy referencyjne \ Microsoft \ WindowsPowerShell \ 3.0 \ System.Management.Automation.dll Czy są tam trzy? – Flores

+0

Ale jak widać na pierwszym zrzucie ekranu, powołuję się dokładnie na ten sam plik ... to jest .. to samo miejsce .. – Flores

+0

Dziwne rzeczy .. Rzeczywiście są trzy, dwie, o których wspominasz i ta, której używałem. Wszystkie są różne. Rozmiary plików ~ 1mb, ~ 3mb i ~ 6mb. – Flores

Powiązane problemy