インポート時にpowershellですでにできるように、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」という用語は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません
私はそれからこれをやろうとしました
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 を直接制御する方法を教えてください。