Список всех остановленных пулов приложений в ферме IIS6

#scripting #powershell #iis-6 #adsi

#сценарии #powershell #iis-6 #adsi

Вопрос:

Я хотел бы напечатать только те пулы IIS6, которые остановлены (имеют AppPoolState 3 или 4). Если все остальное в порядке (все запущено), просто выведите «OK». Я не уверен, что есть простой способ проверить их все. Я пытался перебирать пулы приложений, проверяя каждое состояние по очереди, но это выглядит немного сложно, и, похоже, есть более простой способ сделать это.

Этот код войдет в цикл, который проходит через огромный список серверов, выполняющих другие проверки на каждом, а затем выводит таблицу.

 $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
}
  

Ответ №1:

Вы можете проверить, есть ли какие-либо элементы в коллекции, подобной этой:

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

Комментарии:

1. Похоже, я снова переоцениваю проблему. Спасибо!