来自c#的Microsoft部署工具包

时间:2016-08-31 10:05:19

标签: c# powershell mdt

我正在尝试使用c#中的MDT,就像导入MicrosoftDeploymentToolkit.psd1时我已经可以使用powershell一样。例如,我可以直接从powershell运行命令Get-MDTPersistentDrive而没有问题。

但我找不到从c#做同样事情的方法,我试图直接包含Microsoft.BDD.PSSnapIn.dll(基本上是做什么" MicrosoftDeploymentToolkit.psd1")然后我可以访问GetPersistent类,但是一条错误消息告诉我我不能直接调用PSCMDlet。

然后我尝试使用PowerShell类

var ps = PowerShell.Create();
ps.AddScript(@"import-module C:\...\MicrosoftDeploymentToolkit.psd1");
ps.Invoke();

ps.AddCommand("Get-MDTPersistentDrive");
var result = ps.Invoke();

但是我收到了这个例外

  

术语' Get-MDTPersistentDrive'不被识别为a的名称   cmdlet,函数,脚本文件或可操作程序

然后我试着这样做

InitialSessionState initial = InitialSessionState.CreateDefault();
initial.ImportPSModule(new string[] { @"C:\...\MicrosoftDeploymentToolkit.psd1" });
Runspace runspace = RunspaceFactory.CreateRunspace(initial);
runspace.Open();
PowerShell ps = PowerShell.Create();
ps.Runspace = runspace;
ps.Commands.AddCommand("Get-MDTPersistentDrive");

var result= ps.Invoke();

我收到错误

  

对象引用未设置为对象的实例

我真的输了,我不明白这个错误是什么意思,如果你能告诉我哪里错了,或者从c#执行PSCmdlet甚至更好直接如何控制那将是非常棒的MDT。

0 个答案:

没有答案