Инструментарий развертывания Microsoft из C#

Я пытаюсь использовать MDT из C#, как я уже могу сделать с PowerShell при импорте 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" не распознается как имя командлета, функции, файла сценария или работоспособной программы.

Затем я попытался сделать это

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();

и я получаю ошибку

В экземпляре объекта не задана ссылка на объект

Я действительно заблудился, я не понимаю, что они имеют в виду с этой ошибкой, если бы вы могли показать мне, где я не прав, или способ выполнить PSCmdlet из C# или даже лучше напрямую, как управлять MDT, что было бы здорово.

0 ответов

Другие вопросы по тегам