2012-05-02 14 views
1

Exchange 2010サーバのすべてのデータベースをメールボックスにリストアップする必要があります。Exchange 2010のC#とpowershell - 'Group-Object'という用語が認識されない

私はC#で同じことをしようとした場合、私は選択-オブジェクトを使用している場合は、私は、私が得る、しかし

Get-Mailbox -Server Exc2010 | Group-Object Database | Select-Object name,count 


Name  Count 
----  ----- 
DB01  16 
DB04  3 
DB02  2 
DB03  5 

The term 'Group-Object' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again. 

//Running cmdlets remotely 
WSManConnectionInfo wsConnectionInfo = new WSManConnectionInfo(new Uri("https://" + ExchangeSite + "/powershell"), 
"http://schemas.microsoft.com/powershell/Microsoft.Exchange", getCredential()); 
wsConnectionInfo.AuthenticationMechanism = AuthenticationMechanism.Basic; 
wsConnectionInfo.SkipCACheck = true; 
wsConnectionInfo.SkipCNCheck = true; 
wsConnectionInfo.SkipRevocationCheck = true; 

rsRemoteRunspace = RunspaceFactory.CreateRunspace(wsConnectionInfo); 
rsRemoteRunspace.Open(); 

Collection<PSObject> Result = null; 
Pipeline pipeLine = rsRemoteRunspace.CreatePipeline(); 

Command myCommand = new Command("Get-MailboxDatabase"); 
myCommand.Parameters.Add("Server", "Exc2010"); 
Command myCommand2 = new Command("Group-Object"); 
myCommand2.Parameters.Add("Property", "Database"); 

pipeLine.Commands.Add(myCommand); 
pipeLine.Commands.Add(myCommand2); 
Result = pipeLine.Invoke(); 

これを実行することができますPowerShellで

それは正常に動作するので、なぜ私はグループオブジェクトを使用してそのエラーを取得しているのだろうかと思う。

ご協力いただければ幸いです。

EDIT

私が選択-オブジェクトを使用してそれを実行した場合、それが正常に動作します:

Command myCommand = new Command("Get-MailboxDatabase"); 
myCommand.Parameters.Add("Server", "Exc2010"); 
Command myCommand2 = new Command("Select-Object"); 
myCommand2.Parameters.Add("Property", "Name"); 

pipeLine.Commands.Add(myCommand); 
pipeLine.Commands.Add(myCommand2); 
Result = pipeLine.Invoke(); 

PSObject PSResult = Result.FirstOrDefault(); 
Console.WriteLine("DB Name: " + PSResult.Properties["Name"].Value.ToString()); 

私が得る、

DB Name: DB01 
+0

あなたはより多くのコードを共有することはできますか? –

+0

@ ShayLevy、コードを追加しました。ありがとう – m0dest0

+0

あなたはselect-objectを使用できますか? –

答えて

2

では、リモート管理セッションでこれを実行していますExchangeによって提供される?その場合、Exchangeによって提供されるコマンドレットのみを実行でき、Group-Objectはその1つではありません。

+0

あなたは正しかった、+1 –

+0

@David、サポートされているコマンドのリストがあります。私の前回の版をご覧ください。Select-Objectがサポートされている理由とGroup-Objectがサポートされていないのは不思議です。 – m0dest0

+0

ここでそれらを見つけることができる場所は次のとおりです。http://technet.microsoft.com/en-us/library/bb124413.aspx –

1

@Davidが正しいです。リモートエンドポイントでは、Exchangeコマンドしか使用できません。別の解決策を見つける必要があります。

$s = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://ex1/PowerShell/ -Authentication Basic -Credential (Get-Credential) 
Invoke-Command $s { Get-Mailbox } | Group-Object Database -NoElement 

メールボックスオブジェクトが到着した後にグループ化が行われることに注意してください。私は開発者ではないので、コードがC#のように見えるかどうかはわかりません。私はあなたがローカルのrunspaceを作成し、そこにグループ化する必要があると思います。

UPDATE:Exit-PSSessionGet-FormatDataMeasure-ObjectOut-Deafult:、リモートセッションで5つのPowerShellのコアコマンドレットがあるExchangeコマンドレットの横に

Invoke-Command $session { Get-Command } 

:あなたはこれでリモートセッションで使用可能なコマンドレットを見つけることができますおよびSelect-Object。これらのコマンドレットは、制限されたエンドポイントの一部です。それ以外のコアコマンドレットは存在しません。

0

私は、このようにコマンドレットを変更しなければならなかったので、私は、グループオブジェクトを実行できませんでした:

   Pipeline pipeLine = rsRemoteRunspace.CreatePipeline(); 
       Command myCommand = new Command("Get-Mailbox"); 
       myCommand.Parameters.Add("Server", Server); 

       pipeLine.Commands.Clear(); 
       pipeLine.Commands.Add(myCommand); 
       Mailboxes = pipeLine.Invoke(); 

       foreach (PSObject obj in Mailboxes) 
       { 
        if (mbCount.ContainsKey(obj.Members["Database"].Value.ToString())) 
        { 
         mbCount[obj.Members["Database"].Value.ToString()] += 1; 
        } 
        else 
        { 
         mbCount.Add(obj.Members["Database"].Value.ToString(), 1); 
        } 
       } 
       pipeLine = null; 
      } 

      foreach (String Database in mbCount.Keys) 
      { 
       Console.WriteLine("Database : " + Database + " Mailboxes : " + mbCount[Database].ToString()); 
      } 
関連する問題