2011-06-08 64 views
2

在我想只打印已停止或停止這些IIS6池(有3的AppPoolState或4)。如果一切正常(全部開始),只需打印出「OK」。我不確定一個簡單的方法來檢查所有這些。我試圖通過應用程序池循環檢查每個狀態,但它看起來有點複雜,似乎有一個更簡單的方法來做到這一點。列出所有停止的應用程序池的IIS6農場

該代碼會通過一個巨大的運行上相互檢查服務器列表運行,然後打印出表格中的循環中。

$iispools = [ADSI]"IIS://$server/W3SVC/AppPools" | foreach {$_.children} | select Name,AppPoolState | where {($_.name -ne "DefaultAppPool")} 

if (condition?) 
{ 
    write-host "OK" 
} 
else { 
    # print stopped/stopping pools here 
    $iispools | where { $_.apppoolstate -ge 3 } | convertto-html -fragment 
} 

回答

2

您可以檢查是否有這樣的集合中的任何項目:

$stoppedPools = $iispools | where { $_.apppoolstate -ge 3 } 
if (!$stoppedPools) 
{ 
    write-host "OK" 
} 
else 
{ 
    # print stopped/stopping pools here 
    $stoppedPools | convertto-html -fragment 
} 
+0

猜我再次overanalyzing問題。謝謝! – overbyte 2011-06-08 07:53:09

相關問題