2017-05-09 2 views
0

Ich versuche, die Antwort des Powershell-Skripts zu drucken, die zeigt, dass die Dienste auf einem Remote-Host ausgeführt werden.Wie wird C# RunSpace für PowerShell bereitgestellt?

Wenn ich dies auf Powershell ausführen, bekomme ich die gewünschte Ausgabe. Aber wenn ich dasselbe mit C# versuche, bekomme ich die folgende Ausnahme.

Es ist kein Runspace verfügbar, um Skripts in diesem Thread auszuführen. Sie können einen in der DefaultRunspace-Eigenschaft des System.Management.Automation.Runspaces.Runspace-Typs bereitstellen.

Der Code, den ich verwende ist:

 var powerShell = PowerShell.Create().AddScript(script); 

     var results = powerShell.Invoke(); 

     foreach (var item in results) 
     { 
      try 
      { 
       Console.WriteLine(item); 
      } 
      catch (ExtendedTypeSystemException e) 
      { 
       Console.WriteLine(e); 
       break; 
      } 
     } 

Edit: Output in Powershell

Status Name    DisplayName 
------ ----    ----------- 
Stopped AdtAgent   Microsoft Monitoring Agent Audit Fo... 
Stopped AeLookupSvc  Application Experience 
Stopped ALG    Application Layer Gateway Service 
Stopped AppIDSvc   Application Identity 
Running Appinfo   Application Information 
Stopped AppMgmt   Application Management 
Stopped AppReadiness  App Readiness 
Stopped AppXSvc   AppX Deployment Service (AppXSVC) 
Stopped AudioEndpointBu... Windows Audio Endpoint Builder 
Stopped Audiosrv   Windows Audio 
Running BFE    Base Filtering Engine 
Running BITS    Background Intelligent Transfer Ser... 
Running BrokerInfrastru... Background Tasks Infrastructure Ser... 
Stopped Browser   Computer Browser 
Running CcmExec   SMS Agent Host 
Running CertPropSvc  Certificate Propagation 
Stopped CmRcService  Configuration Manager Remote Control 
Running COMSysApp   COM+ System Application 
Running CryptSvc   Cryptographic Services 
Running DcomLaunch   DCOM Server Process Launcher 
Stopped defragsvc   Optimize drives 

Ausgang mit C#

System.Management.Automation. ExtendedTypeSystemException: Die folgende e Beim Abrufen der Zeichenfolge ist eine Xception aufgetreten: "Exception " ToString "mit" 0 "-Argument (en) aufrufen:" Es gibt keine Runspace zum Ausführen von Skripts in diesem Thread. Sie können einen in der DefaultRunspace-Eigenschaft des System.Management.Automation.Runspaces.Runspace-Typen bereitstellen. Der Skriptblock Sie war versucht aufzurufen: $ this.ServiceName "" --->

Powershell-Version ist 3. Visual Studio Version 2010 Ultimate

Antwort

0

Sieht aus wie ich hatte ein ähnliches Problem, wenn Aufruf einer Skripteigenschaft Aber um die Daten zu erhalten, die Sie am schnellsten suchen, versuchen Sie es. Ändern Sie den Befehl (var-Skript), und geben Sie an, wo die (thing.Members [%%%%%]. Value) die PowerShell-Eigenschaft, die Sie ziehen oder anzeigen möchten, platzieren müssen. (siehe unten)

class Program 
{ 
    static void Main(string[] args) 
    { 
     var script = "Get-NetIPAddress "; 

     var powerShell = PowerShell.Create().AddScript(script).Invoke(); 

     foreach (var thing in powerShell) 
     { 
      try 
      { 
       //the Members must be PROPERTIES of the PowerShell object 
       var name = (thing.Members["InterfaceAlias"].Value); 
       var ip= (thing.Members["IPv4Address"].Value); 

       Console.WriteLine("Connection: " + name + " .......... IP: " + ip); 
      } 
      catch 
      { 

      } 

     } 

     Console.Read(); 
    } 
} 
Verwandte Themen