导入模块命令在powershell windows控制台上工作得很好,但同样的命令在c# api上不起作用。我使用这个项目来执行powershell脚本:http://www.codeproject.com/Articles/18229/How-to-run-PowerShell-scripts-from-C
它会执行其中许多命令,但不会执行“导入模块'c:\vm\vm.psd1'”命令。我尝试导入microsoft模块,但也不起作用。如何使用c#接口执行导入模块命令?
此外,add-pssnapin 'virtualmachinemanager'
也不能正常工作。
发布于 2013-01-22 16:49:43
尝试这样加载模块:
PowerShell powershell = PowerShell.Create();
powerShell.Commands.AddCommand("Import-Module").AddParameter("Name", "c:\vm\vm.psd1'");
或
PowerShell powershell = PowerShell.Create();
powershell.Commands.AddCommand("Add-PsSnapIn").AddParameter("Name", "virtualmachinemanager");
使用管道尝试创建一个InitialSessionState
InitialSessionState iss = InitialSessionState.CreateDefault();
iss.ImportPSModule(new string[] { @"C:\vm\vm.psd1"});
Runspace runSpace = RunspaceFactory.CreateRunspace(iss);
runSpace.Open();
然后使用您的代码和pipeline
从加载的模块运行cmdlet
发布于 2013-01-22 23:44:48
尝试执行以下命令来加载管理单元和执行命令:
using System.Management.Automation.Runspaces;
//...
var rsConfig = RunspaceConfiguration.Create();
using (var myRunSpace = RunspaceFactory.CreateRunspace(rsConfig))
{
PSSnapInException snapInException = null;
var info = rsConfig.AddPSSnapIn("FULL.SNAPIN.NAME.HERE", out snapInException);
myRunSpace.Open();
using (var pipeLine = myRunSpace.CreatePipeline())
{
Command cmd = new Command("YOURCOMMAND");
cmd.Parameters.Add("PARAM1", param1);
cmd.Parameters.Add("PARAM2", param2);
cmd.Parameters.Add("PARAM3", param3);
pipeLine.Commands.Add(cmd);
pipeLine.Invoke();
if (pipeLine.Error != null && pipeLine.Error.Count > 0)
{
//check error
}
}
}
https://stackoverflow.com/questions/14454544
复制相似问题