目標は、Exchange 2010 サイトの最小のデータベースを取得することなので、C# から次の powershell コマンドを実行しようとしています。
Get-MailboxDatabase -server Exchange2010 -Status | select-object Name,DatabaseSize
私が苦労している問題は、Select句コマンドをパイプする方法です。
これは私の試みです、
WSManConnectionInfo wsConnectionInfo = new WSManConnectionInfo(new Uri("https://" + ExchangeSite + "/powershell?serializationLevel=Full"),
"http://schemas.microsoft.com/powershell/Microsoft.Exchange", getCredential());
wsConnectionInfo.AuthenticationMechanism = AuthenticationMechanism.Basic;
wsConnectionInfo.SkipCACheck = true;
wsConnectionInfo.SkipCNCheck = true;
rsRemoteRunspace = RunspaceFactory.CreateRunspace(wsConnectionInfo);
rsRemoteRunspace.Open();
Pipeline pipeLine = rsRemoteRunspace.CreatePipeline();
Collection<PSObject> DatabaSize = null;
Command myCommand = new Command("Get-MailboxDatabase");
myCommand.Parameters.Add("Server", "Exchange2010");
myCommand.Parameters.Add("Status", null);
Command myCommand2 = new Command("Select-Object");
myCommand.Parameters.Add("Name");
myCommand.Parameters.Add("DatabaseSize");
pipeLineMB.Commands.Add(myCommand);
pipeLineMB.Commands.Add(myCommand2);
DatabaSize = pipeLine.Invoke();
しかし、私は得ています、
"A parameter cannot be found that matches parameter name 'Name'."
Exchange サーバーでコマンドレットを実行するクライアント マシンでコードを実行する必要があるため、SnapIn を使用できないことに注意してください。
どんなアドバイスでも大歓迎です。
編集
yamen によって提案された修正を適用し、コマンドを呼び出すことができましたが、値を取得しようとすると、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というメッセージが表示されます。
Servername と Name の値を取得できますが、DatabaseSize で失敗することに注意してください。このフラグはこの値を有効にするフラグであるため、'Status' フラグが適切に設定されていないと推測されます。