【发布时间】:2013-01-17 00:27:28
【问题描述】:
我正在尝试使用 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();
}
【问题讨论】:
-
我不认为 ServerManager 模块被正确导入。您可以在尝试
add-windowsfeature之前先执行import-module命令并查看它给出的结果吗? -
我尝试了以下..但同样的错误。 RunspaceInvoke runSpaceInvokerImport = new RunspaceInvoke(runspace); runSpaceInvokerImport.Invoke("Import-module ServerManager");
-
没有新的错误。 Command command = new Command("add-windowsfeature");说它不是有效的 cmdlet。我开始认为我应该包含 add-windowsfeature 的完整路径....
-
暂时将您的 add-windowsfeature 调用替换为“Get-Module”,以验证您是否加载了正确的模块。 ServerManager 是否依赖于另一个可能不可用的模块?
-
@Zuzlx 我提到当你执行导入它的命令时它会说什么。您应该能够读取“模块已成功加载”行的输出。您需要在继续使用 add-windows 功能之前验证这一点,否则您将继续获得相同的结果。
标签: c# windows powershell exception-handling