C# コードで Powershell リモート処理 (v2) を使用して、Exchange コマンドレットがインストールされていないリモート マシンからリモート Powershell コマンドレット (Exchange 2010 のコマンドレットの 1 つ) を実行しようとしています。私はこのようなものを持っています:
var connection = new WSManConnectionInfo("http://my.exchange.srv/PowerShell", "http://schemas.microsoft.com/powershell/Microsoft.Exchange", credentials);
var runspace = RunspaceFactory.CreateRunspace(connection);
var ps = PowerShell.Create();
ps.Runspace = runspace;
runspace.Open();
var results = ps.AddCommand("Enable-MailPublicFolder").AddArgument(folderId).Invoke();
これにより、RemoteException: 「Enable-MailPublicFolder が認識されない」という用語エラーが返されます。これは、ローカル コンピューターが Exchange コマンドレットに慣れていないためです。
ただし、Exchange モジュールを実行空間にインポートする方法がわかりません。さまざまな解決策を見つけましたが、すべて部分的です。a を使用しRunspaceConfiguration
て Exchange 2010 スナップインを追加するように言われる人もいますRunspaceFactory.CreateRunspace
が、 a を受け入れ、 aRunspaceConfiguration
を渡してWSManConnectionInfo
リモート ホストに接続できるようにするためのオーバーロードはありません。AddScript
別の解決策は、の代わりに呼び出すことですAddCommand
。これは、例外をスローしないように見えますが、理由を言わずに何もしないようにも見えました。ランダムな文字列を渡すよりも、(AddCommand を使用して) 比較的強く型付けした方がよいでしょう。
ローカル マシンにモジュールをインストールする必要のない別の方法はありますか? または、それを除いて、Exchange 2010 コマンドレットをローカルにインストールするにはどうすればよいですか?