Почему метод .Count не будет работать в сеансе EMS / Powershell для этого вывода? - PullRequest
1 голос
/ 24 января 2012

Я работаю над сценарием мониторинга для репликации Exchange 2007 LCR и SCR, чтобы автоматизировать некоторые из моих повседневных дел и убедиться, что другие люди могут увидеть, если что-то не так. Мой код ниже, и у меня есть условие, когда одна из баз данных превышает 2000 журналов в очереди воспроизведения. Я знаю, что восстановление сценария работает, потому что если я проверяю вывод без .count, он возвращает базу данных, чья очередь воспроизведения журнала транзакций слишком высока. Может кто-нибудь объяснить мне, что я делаю неправильно и почему я не могу сосчитать результат?

#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 для подсчета других выходных данных коллекции без проблем.

1 Ответ

2 голосов
/ 24 января 2012

Попробуйте ввести его в массив.Я проиллюстрировал разницу с помощью командлета get-process ниже:

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

Итак, вы должны сделать что-то вроде:

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