使用PowerShell回收IIS应用程序池:“异常调用回收”
它看起来像一个最近的Windows更新已经打破了我用来回收IIS6应用程序池的一些功能,因为这直到今天一直工作数月。使用PowerShell回收IIS应用程序池:“异常调用回收”
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"
}
}
的问题是什么任何想法,我应该怎么处理这个?
一个应用程序池的停止,这是造成错误。其他应用程序池可以很好地回收。上面的代码可以用于其他人。
您可以尝试使用ADSI回收:
$server = "IIsServerName"
$iis = [adsi]"IIS://$server/W3SVC/AppPools"
$iis.psbase.children | foreach {
$pool = [adsi]($_.psbase.path)
$pool.psbase.invoke("recycle")
}
尝试此方法,抛出一个错误: 异常调用“调用”与“2”参数s):“异常已被调用的目标引起 ”。 在D:\ scripts \ deployment \ inc \ deploy.ps1:124 char:28 + $ pool.psbase.invoke( 2009-02-26 14:18:53
原来的问题是为IIS6,但我跑进使用WebAdministration模块的重启WebAppPool在Windows 2012所以我放弃了回调用APPCMD类似的东西,并能正常工作:
& $env:windir\system32\inetsrv\appcmd recycle apppool "YOURAPPPOOLNAMEHERE"
有时候,您不必过度设计解决方案。希望有一天能帮助别人。
感谢Bewc,没有意识到这是可能的。更直接。 – 2013-12-12 11:21:26
它看起来像$ pool对象可能为空,所以它必须是我如何选择应用程序池对象的问题 – 2009-02-26 12:59:50