2014-10-14 2 views
2

open-device 127.0.0.1을 사용하여 원격 장치에 연결합니다. C#에서 어떻게 호출합니까? 이 코드 : 오류에C#에서 PowerShell 명령`open-device`를 어떻게 실행합니까?

PowerShell powerShell = PowerShell.Create(); 
PSCommand connect = new PSCommand(); 
connect.AddCommand("open-device"); 
powerShell.Commands = connect; 
PSOutput = powerShell.Invoke() 

결과 : 그러나

System.Management.Automation.CommandNotFoundException : The term open-device is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.at

System.Management.Automation.Runspaces.PipelineBase.Invoke(IEnumerable input) at 
System.Management.Automation.Runspaces.Pipeline.Invoke() at 
System.Management.Automation.PowerShell.Worker.ConstructPipelineAndDoWork(Runspa‌​ce rs, Boolean performSyncInvoke) 

, 나는 Invoke를 사용하여 get-service 명령을 실행 할 수 있어요.

+0

,하지만 난 궁금 해서요 :'127.0.0.1' (일명,'localhost'은) 매우 원격으로 표시되지 않습니다 ...? – stakx

답변

0

해당 모듈을 먼저 Import-Module cmdlet equivalent =>로로드해야합니다.이 모듈은 ImportPSModule() 메서드를 통해 InitialSessionState으로 이루어집니다.

DnsClient 모듈 내 예를 아래

: 오프 주제

using System; 
using System.Collections.ObjectModel; 
using System.Management.Automation; 
using System.Management.Automation.Runspaces; 
using System.Text; 

namespace PowershellTest1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      InitialSessionState initial = InitialSessionState.CreateDefault(); 
      String[] modules = { "DnsClient" }; 
      initial.ImportPSModule(modules); 
      Runspace runspace = RunspaceFactory.CreateRunspace(initial); 
      runspace.Open(); 
      RunspaceInvoke invoker = new RunspaceInvoke(runspace); 

      Collection<PSObject> results = invoker.Invoke("Resolve-DnsName 'localhost'"); 
      runspace.Close(); 

      // convert the script result into a single string 

      StringBuilder stringBuilder = new StringBuilder(); 
      foreach (PSObject obj in results) 
      { 
       foreach (PSMemberInfo m in obj.Members) 
       { 
        stringBuilder.AppendLine(m.Name + ":"); 
        stringBuilder.AppendLine(m.Value.ToString()); 
       } 
      } 

      Console.WriteLine(stringBuilder.ToString()); 
      Console.ReadKey(); 
     } 
    } 
} 
+0

안녕하세요, 답장을 보내 주셔서 감사합니다. Open-device는 Powershell에서 실행되는 tshell (Texus)의 cmdslet입니다. 그러나 "System.Management.Automation"은 Powershell CMDlets 만 지원합니다. – user1752840

+0

SO에서 TShell 태그를 만들어야합니까? – vasja