4

C# を使用して powershell コマンドを実行しようとしていますが、パイプラインを呼び出すとエラーが発生し続けます。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();
}
4

1 に答える 1

1

ServerManager は 64 ビットのみのモジュールです (下には存在しませんが、下にC:\Windows\SysWOW64\WindowsPowerShell\v1.0\Modulesは存在しますC:\Windows\System32\WindowsPowerShell\v1.0\Modules)。x64 としてコンパイルすると、コードが機能するはずです。

于 2013-07-03T21:29:00.573 に答える