0

PowerShell をホストし、「ServerAdmin」モジュールを必要とする Get-Windowsfeature を実行しようとしています。OSはサーバー2008R2です。PS コマンド プロンプトで "Import-module ServerAdmin" を正常に実行できるので、マシンの構成が適切であることがわかります。ただし、カスタム c# ホストで動作させることはできません。以下に示す2つのアプローチを試しました。1 つ目は import-module コマンドを使用して、「どのモジュール ディレクトリにも有効なモジュール ファイルが見つからなかったため、指定されたモジュール 'ServerAdmin' はロードされませんでした」というエラーを報告します。InitialSessionState.ImportModule() を使用する 2 番目の方法も失敗します。そのメソッドからエラーは報告されませんが、get-windowsfeature コマンドは認識されないままです。

最初のアプローチ:

var ps = PowerShell.Create();
var cmd = ps.AddCommand("Import-Module");
cmd.AddArgument("ServerManager");
ps.Invoke();
Console.WriteLine("errors");
// produces "The specified module 'ServerAdmin' was not loaded because no valid module file was found in any module directory"
foreach (var error in ps.Streams.Error)
{
    Console.WriteLine(error.ToString());
}

2 番目のアプローチ:

var ps = PowerShell.Create();
var initial = InitialSessionState.CreateDefault();
initial.ImportPSModule(new[]{"ServerManager"});
var runspace = RunspaceFactory.CreateRunspace(initial);
runspace.Open();
ps.Runspace = runspace;
ps.AddCommand("Get-WindowsFeature");
var results = ps.Invoke(); // throws exception because Get-WindowsFeature is not known
foreach (var result in results)
{
    Console.WriteLine(result);
}
4

1 に答える 1

1

問題が見つかりました。x64や「任意」ではなく、x86にビルドしていました。どうやらx86がデフォルトです。もちろん、server2008 は wow64 で実行できてよかったのですが、serveradmin モジュールはそのコンテキストでは利用できません。

于 2013-03-27T03:22:21.557 に答える