2013-01-17 38 views
4

我試圖運行使用C#的powershell命令,但我在調用管道時不斷收到錯誤。我想知道,如果有人知道爲什麼我不斷得到添加Windows功能不被識別。提前致謝。add-windowsfeature不被識別

private static void RunScript(string name) 
{ 
    InitialSessionState initial = InitialSessionState.CreateDefault(); 
    initial.ImportPSModule(new[] { "ServerManager"}); 
    Runspace runspace = RunspaceFactory.CreateRunspace(initial); 
    // create Powershell runspace 

    runspace.Open(); 

    RunspaceInvoke runSpaceInvoker = new RunspaceInvoke(runspace); 
    runSpaceInvoker.Invoke("Set-ExecutionPolicy Unrestricted"); 


    Pipeline pipeline = runspace.CreatePipeline(); 
    Command cm = new Command("Import-module"); 
    cm.Parameters.Add("name","ServerManager"); 
    pipeline.Commands.Add(cm); 
    Command command = new Command("add-windowsfeature"); 
    command.Parameters.Add(null, name); 
    pipeline.Commands.Add(command); 

    var a = pipeline.Invoke(); 
    foreach (var psObject in a) 
    { 
     Console.WriteLine(psObject); 
    } 

    runspace.Close(); 
} 
+0

我不認爲ServerManager模塊正在導入正確。你可以在嘗試'add-windowsfeature'之前嘗試執行'import-module'命令並查看它給出的結果嗎? – Despertar

+0

我嘗試了以下......但同樣的錯誤。 RunspaceInvoke runSpaceInvokerImport = new RunspaceInvoke(runspace); runSpaceInvokerImport.Invoke(「Import-module ServerManager」); – Zuzlx

+0

什麼是新錯誤? – Despertar

回答

1

ServerManager的是一個64位的唯一的模塊(它不C:\Windows\SysWOW64\WindowsPowerShell\v1.0\Modules下存在,但C:\Windows\System32\WindowsPowerShell\v1.0\Modules下會存在)。編譯爲x64,你的代碼應該可以工作。

+0

謝謝。是的,如果我沒有記錯的話,這是一個64 v 32的問題。標記爲已回答。 – Zuzlx