1

我正在为交换2007 LCR和SCR复制的监视脚本工作,以自动执行我的一些日常工作,并确保其他人可以看到是否有问题。我的代码如下,并且我有一个条件,其中一个数据库在重播队列中超过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

试着强迫它进入数组。我已经说明了差异与下面的get-process的cmdlet:

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

所以,你必须做一些事情,如:

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

完美的作品。我只是不知道为什么。我可以运行一个非常类似的命令,返回相同类型的输出,并且它可以很好地与.count一起使用。不管它为什么起作用,那正是我所需要的。谢谢!!!!! – John

+0

那么'.Count'是集合的一个属性。所以如果输出是一个集合,但它可能不适用于其他任何东西。 – JasonMArcher

相关问题