2017-04-11 34 views
0

これまでPowerShellでこのエラーが発生したことはありません。 IDEを使用すると機能しますが、Exchangeシェルウィンドウでは機能しません。[Microsoft.Exchange.Data.Directory.ADObjectId]に 'op_Addition'という名前のメソッドが含まれていないためにメソッド呼び出しが失敗しました

私はC#で終日これを行うことができますが、何らかの理由でPowershellで動作しません。私はメソッドで+を使用することはできず、$resultsを配列として定義し、それに+=を使用していますが、それらのどれも使用していないというネット上の例を見てきました。

誰かが私のコードを修正することができますが、なぜこれが動作していないのかを教えてください。このミスを繰り返すことはできません。

エラーメッセージが

 
Method invocation failed because [Microsoft.Exchange.Data.Directory.ADObjectId] 
doesn't contain a method named 'op_Addition'. 
At C:\Users\XXXX\Desktop\bleh1.ps1:168 char:3 
+ $results.Add($serverName + "|" + $totalDbs.ToString() + "|" + $activeDbs.ToSt ... 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~‌​~~~~~~~~~~~~~~~~~~~~‌​~~~ 
    + CategoryInfo : InvalidOperation: (op_Addition:String) [], RuntimeException 
    + FullyQualifiedErrorId : MethodNotFound 

はあなたが唯一の助けをありがとう、これが働くことになったものです2以上のExchangeサーバー名

$servers = @("server1", "server2"); 

[int] $mountedDBs = 0; 
[int] $dismountedDBs = 0; 
$preferenceOne = 0; 
$preferenceTwo = 0; 
$preferenceThree = 0; 
$preferenceFour = 0; 
[int] $displayLineCount = 0; 
$results = New-Object System.Collections.ArrayList 

foreach($server in $servers) 
{ 
    if ($server -ne "") 
    { 
     [Array]$values = Get-MailboxDatabase -Server $server -Status; 
     $serverTest = $server; 
     Clear-Item Variable:mountedDBs 
     Clear-Item Variable:dismountedDBs 

     for($i = 0; $i -lt $values.Count; $i++) 
     { 
      #servername  totaldbs activedbs passivedbs preferencecountlist  mounteddbs  dismounteddbs dagname 
      $serverName = $server;  
      $totaldbs = $values.Count; 
      $temp1 = $values[$i].Mounted; 

      if ($values[$i].Mounted -eq "true") 
      { 
       $mountedDBs = $mountedDBs + 1 | Out-Null;; 
      } 
      else 
      { 
       $dismountedDBs = $dismountedDBs + 1 | Out-Null;; 
      } 

      $activationPrefTemp = $values[$i].ActivationPreference; 
      for($j = 0; $j -lt $activationPrefTemp.Count; $j++) 
      { 
       $temp1 = $activationPrefTemp[$j].ToString(); 
       if ($activationPrefTemp[$j].ToString().Contains($server.ToString())) 
       { 
        $activationPref = $activationPrefTemp[$j]; 
        [string]$activationPrefNumber = $activationPref; 
        [int] $index = $activationPrefNumber.IndexOf(","); 
        $activationPrefNumber = $activationPrefNumber.Remove(0, $index + 1); 
        $activationPrefNumber = $activationPrefNumber.Trim() 
        $index = $activationPrefNumber.IndexOf("]"); 
        $activationPrefNumber = $activationPrefNumber.Remove($index); 

        Switch ($activationPrefNumber)  
        { 
         1 {$preferenceOne = $preferenceOne + 1; break;} 
         2 {$preferenceTwo = $preferenceTwo + 1; break;} 
         3 {$preferenceThree = $preferenceThree + 1; break;} 
         4 {$preferenceFour = $preferenceFour + 1; break;} 
         default {$null} 
        } 
       } 
      }  
      $mountedDBs = $mountedDBs; 
     } 
     $activeDbs = $preferenceOne; 
     $passiveDbs = $preferenceTwo + $preferenceThree + $preferenceFour; 
     $results.Add($serverName + "|" + $totalDbs.ToString() + "|" + $activeDbs.ToString() + "|" + $passiveDbs.ToString() + "|" + $preferenceOne + "," + $preferenceTwo + "," + $preferenceThree + "," + $preferenceFour + "|" + $mountedDBs + "|" + $dismountedDbs + "|" + $dagName); 
     $displayLineCount = $displayLineCount + 1 | Out-Null; 
     $preferenceOne = 0 | Out-Null; 
     $preferenceTwo = 0 | Out-Null; 
     $preferenceThree = 0 | Out-Null; 
     $preferenceFour = 0 | Out-Null; 
    } 
} 
+0

「| Out-Null;あなたの状況は改善しますか?ここで実際に何が間違っているのか詳細を含めることができますか? –

+0

違反しているオブジェクト( '$ varname.GetType()。FullName')が連結しようとしている変数を確認してください。 –

答えて

0

$serversを移入する必要が再現することです@ MacroPower。あなたはあなたの投稿を削除したので、私はあなたに返信のクレジットを与える方法を知らないのですか?

$ server変数が文字列として明示的に型指定されていないため、.ToString()キャストが必要でした。

[int] $mountedDBs = 0; 
[int] $dismountedDBs = 0; 
$preferenceOne = 0; 
$preferenceTwo = 0; 
$preferenceThree = 0; 
$preferenceFour = 0; 
[int] $displayLineCount = 0; 
$results = New-Object "System.Collections.Generic.List[String]" 


foreach($server in $servers) 
{ 
    if ($server -ne "") 
    { 
     [Array]$values = Get-MailboxDatabase -Server $server -Status; 
     $serverTest = $server; 
     Clear-Item Variable:mountedDBs 
     Clear-Item Variable:dismountedDBs 

     for($i = 0; $i -lt $values.Count; $i++) 
     { 
      #servername  totaldbs activedbs passivedbs preferencecountlist  mounteddbs  dismounteddbs dagname 
      $serverName = $server; 
      $totaldbs = $values.Count; 
      $temp1 = $values[$i].Mounted; 

      if ($values[$i].Mounted -eq "true") 
      { 
       $mountedDBs = $mountedDBs + 1; 
      } 
      else 
      { 
       $dismountedDBs = $dismountedDBs + 1; 
      } 

      $activationPrefTemp = $values[$i].ActivationPreference; 
      for($j = 0; $j -lt $activationPrefTemp.Count; $j++) 
      { 
       $temp1 = $activationPrefTemp[$j].ToString(); 
       if ($activationPrefTemp[$j].ToString().Contains($server.ToString())) 
       { 
        $activationPref = $activationPrefTemp[$j]; 
        [string]$activationPrefNumber = $activationPref; 
        [int] $index = $activationPrefNumber.IndexOf(","); 
        $activationPrefNumber = $activationPrefNumber.Remove(0, $index + 1); 
        $activationPrefNumber = $activationPrefNumber.Trim() 
        $index = $activationPrefNumber.IndexOf("]"); 
        $activationPrefNumber = $activationPrefNumber.Remove($index); 

        Switch ($activationPrefNumber) 
        { 
         1 {$preferenceOne = $preferenceOne + 1; break;} 
         2 {$preferenceTwo = $preferenceTwo + 1; break;} 
         3 {$preferenceThree = $preferenceThree + 1; break;} 
         4 {$preferenceFour = $preferenceFour + 1; break;} 
         default {$null} 
        } 
       } 
      }   
      $mountedDBs = $mountedDBs; 
     } 
     $activeDbs = $preferenceOne; 
     $passiveDbs = $preferenceTwo + $preferenceThree + $preferenceFour; 

     $results.Add($serverName.ToString() + "|" + $totalDbs.ToString() + "|" + $activeDbs.ToString() + "|" + $passiveDbs.ToString() + "|" + $preferenceOne + "," + $preferenceTwo + "," + $preferenceThree + "," + $preferenceFour + "|" + $mountedDBs + "|" + $dismountedDbs + "|" + $dagName); 
     $displayLineCount = $displayLineCount + 1 | Out-Null; 
     $preferenceOne = 0; 
     $preferenceTwo = 0; 
     $preferenceThree = 0; 
     $preferenceFour = 0; 
    } 
関連する問題