看来最近的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"
        }
}

关于问题是什么以及如何解决这个问题有任何想法吗?

最佳答案

最初的问题是针对IIS6的,但是在Windows 2012上使用WebAdministration模块的Restart-WebAppPool遇到了类似的问题。因此,我放弃了调用AppCMD,并且效果很好:

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

有时,您不必过度设计解决方案。希望有一天能对别人有所帮助。

07-24 09:44