#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. Похоже, я снова переоцениваю проблему. Спасибо!