3

最近の 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"
        }
}

問題の内容と、これにどのように取り組むべきかについての考えはありますか?

4

3 に答える 3

3

元の質問は IIS6 に関するものでしたが、Windows 2012 で WebAdministration モジュールの Restart-WebAppPool を使用して似たような問題に遭遇したため、AppCMD の呼び出しに戻りましたが、うまくいきました。

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

場合によっては、ソリューションを過度に設計する必要はありません。いつか他の人に役立つことを願っています。

于 2013-12-06T01:02:46.843 に答える
2

アプリケーション プールの 1 つが停止したため、エラーが発生しました。他のアプリケーション プールは正常にリサイクルされていました。上記のコードは、他の人に使用しても問題ありません。

于 2009-03-04T12:18:04.097 に答える
1

ADSIでリサイクルを試みることができます:

$server = "IIsServerName"  
$iis = [adsi]"IIS://$server/W3SVC/AppPools"  
$iis.psbase.children | foreach {  
    $pool = [adsi]($_.psbase.path)   
    $pool.psbase.invoke("recycle")  
}
于 2009-02-26T13:51:51.240 に答える