Переработка пула приложений IIS с помощью PowerShell:«Исключение при вызове Recycle»
-
09-09-2019 - |
Вопрос
Похоже, недавнее обновление Windows нарушило некоторые функции, которые я использовал для повторного использования пулов приложений IIS6, поскольку до сегодняшнего дня это работало уже несколько месяцев.
Exception calling "Recycle" : "Win32: The object identifier does not representException calling "Recycle" : "Win32: The object identifier does not represent a valid object.
функция, которую я использовал для повторного использования пулов приложений, была:
function recycle-pool($strServerName)
{
$objWMI = [WmiSearcher] "Select * From IIsApplicationPool"
$objWMI.Scope.Path = "\\" + $strServerName + "\root\microsoftiisv2"
$objWMI.Scope.Options.Authentication = 6
$pools = $objWMI.Get()
foreach ($pool in $pools)
{
$pool.recycle()
if (!$?)
{
Write-Host $pool.name " - ERROR"
}
else
{
Write-Host $pool.name " - Recycled"
}
}
Есть идеи, в чем проблема и как мне к этому подойти?
Решение 2
Один из пулов приложений был остановлен, что и вызвало ошибку.Другие пулы приложений переработали нормально.Приведенный выше код можно использовать для кого-либо еще.
Другие советы
Первоначальный вопрос был для IIS6, но я столкнулся с чем-то похожим, используя Restart-WebAppPool модуля веб-администрирования в Windows 2012.Поэтому я вернулся к вызову AppCMD, и все сработало нормально:
& $env:windir\system32\inetsrv\appcmd recycle apppool "YOURAPPPOOLNAMEHERE"
Иногда вам не нужно переусложнять решение.Надеюсь, когда-нибудь это поможет другим.
Вы можете попробовать переработать с помощью ADSI:
$server = "IIsServerName"
$iis = [adsi]"IIS://$server/W3SVC/AppPools"
$iis.psbase.children | foreach {
$pool = [adsi]($_.psbase.path)
$pool.psbase.invoke("recycle")
}