0

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 コマンドレットをローカルにインストールするにはどうすればよいですか?

4

1 に答える 1

1

通常、表示されるエラーは、リモート接続に使用しているアカウントが、Exchange で必要な RBAC 役割グループのメンバーではないことを示しています。

リモート セッションが初期化されると、サーバーは接続を確立しているアカウントが持つロールを確認し、そのロール メンバーシップのセット用にカスタマイズされたセッションで一連のプロキシ関数を作成します。アカウントがパブリック フォルダーを管理する役割グループに属していない場合、セッションで使用できるパブリック フォルダー管理コマンドレットのプロキシ機能はありません。

于 2013-10-16T10:48:16.967 に答える