1

我正在尝试从 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,那就太棒了。

4

0 回答 0