1

私は毎日の仕事の一部を自動化し、何か問題があるかどうか他の人が確認できるように、Exchange 2007 LCRとSCRレプリケーションの監視スクリプトを作成しています。私のコードは以下の通りですが、データベースの1つが再生キューの2000を超えるログになっている状態があります。 .countを指定せずに出力をチェックすると、トランザクションログの再生キューが高すぎるデータベースが返されるため、スクリプトの残りの部分が機能することがわかります。誰かが私が間違ってやっていることを私に説明することができ、なぜ出力を数えられないのですか?.Countメソッドがこの出力に対してEMS/Powershellセッションで動作しないのはなぜですか?

#SCR Replay Queue Length Check 
IF (($SCRstatusTable|? {$_.ReplayQueueLength -ge 2000}).Count -gt 0) 
{ 
    $SCRReplayQueueLengthHealth = "SCR replay queue length check: At least 1 instance 
     is reporting more than 2000 queued logs. Refer to detailed logs for more information." 
} 
ELSE 
    { 
      $SCRReplayQueueLengthHealth = "SCR replay queue length check: No instances 
      currently reporting more than 2000 logs queued for replay." 
     } 

ご協力いただきありがとうございます。 .countメソッドを使用して他のコレクションの出力を問題なくカウントしていたので、それが構文であると思っています。

答えて

2

これを配列に強制してください。完璧に動作

@($SCRstatusTable|? {$_.ReplayQueueLength -ge 2000}).Count 
+0

:だからあなたのような何かをする必要があり

PS > (get-process | select -first 1).count #no count PS > @(get-process | select -first 1).count 1 

:私は下にget-processコマンドレットを使用して違いを説明しました。なぜ私は確信していない。私は同じ種類の出力を返す非常に似たコマンドを実行することができ、それは.countでうまく動作します。それがなぜ機能するかにかかわらず、それは私が必要としていたものです。ありがとう!!!!! – John

+0

まあ、 '.Count'はコレクションのプロパティです。したがって、出力がコレクションの場合は機能しますが、他のものでは機能しない可能性があります。 – JasonMArcher

関連する問題