Переработка пула приложений IIS с помощью PowerShell: «Возврат исключительной ситуации» - PullRequest
3 голосов
/ 26 февраля 2009

Похоже, что недавнее обновление 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"
        }
}

Есть идеи, в чем проблема и как мне к этому подойти?

Ответы [ 3 ]

3 голосов
/ 06 декабря 2013

Первоначальный вопрос касался IIS6, но я столкнулся с чем-то похожим, используя Restart-WebAppPool модуля WebAdministration в Windows 2012. Поэтому я вернулся к вызову AppCMD, и это сработало:

& $env:windir\system32\inetsrv\appcmd recycle apppool "YOURAPPPOOLNAMEHERE"

Иногда вам не нужно чрезмерно проектировать решение. Надеюсь, что когда-нибудь это поможет другим.

2 голосов
/ 04 марта 2009

Один из пулов приложений был остановлен, что вызвало ошибку. Другие пулы приложений были переработаны нормально. Код выше можно использовать для всех остальных.

1 голос
/ 26 февраля 2009

Вы можете попробовать переработать с помощью ADSI:

$server = "IIsServerName"  
$iis = [adsi]"IIS://$server/W3SVC/AppPools"  
$iis.psbase.children | foreach {  
    $pool = [adsi]($_.psbase.path)   
    $pool.psbase.invoke("recycle")  
}
...