我正在尝试从 c# 使用 MDT,就像在导入MicrosoftDeploymentToolkit.psd1
. 例如,我可以Get-MDTPersistentDrive
直接从 powershell 运行命令而不会出现问题。
但是我找不到从 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”未被识别为 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,那就太棒了。