2015-04-25 3 views
0

Я хочу выполнить команду powershell на удаленном компьютере с C#. Я получил то же самое, используяОткрытие пробелов несколько раз

public Collection<PSObject> RunScript(String Command) 
    { 
     Collection<PSObject> results = null; 
     using (var powershell = PowerShell.Create()) 
     { 
     Runspace runspace = RunspaceFactory.CreateRunspace(connection); 
     runspace.Open(); 
     powershell.Runspace = runspace(); 
      powershell.AddScript(Command); 
      results = powershell.Invoke(); 
      runspace.Close(); 
     } 
      return results; 
     } 
    } 

Я могу выполнить это в первый раз. но когда я пытаюсь выполнить эту функцию во второй раз, это дает мне ошибку, пробел закрыт. Фактически я действительно закрыл его, но почему он не открывается при вызове функции.

ответ

0

Вы закрыли его, но вы не избавиться от него:

using (var powershell = PowerShell.Create()) 
using (Runspace runspace = RunspaceFactory.CreateRunspace(connection)) 
{ 
    runspace.Open(); 
    powershell.Runspace = runspace(); 
    powershell.AddScript(Command); 
    results = powershell.Invoke(); 
    runspace.Close(); 
} 
+0

жаль, что я не был достаточно ясен на пост выше. на самом деле я хочу создать только один раз. то я хочу многократно открыть n те же самые пробелы. избавляя местные ресурсы. Я не хочу этого делать. –

+0

@ kaustubh93 В этом случае, я думаю, вам нужно объявить и создать экземпляр 'runpace' вне рамки вашей функции. –

Смежные вопросы