2009-02-26 17 views
3

最近のWindowsのアップデートで、今日まで数ヶ月間働いていたIIS6アプリケーションプールをリサイクルするために使用していた機能が壊れているようです。PowerShellを使用してIISアプリケーションプールをリサイクルする:「リサイクルを呼び出す例外」

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" 
     } 
} 

問題が何であるか上の任意のアイデアと私はこれにアプローチする方法:

Exception calling "Recycle" : "Win32: The object identifier does not representException calling "Recycle" : "Win32: The object identifier does not represent a valid object. 

私はアプリケーションプールをリサイクルするために使用していた機能でしたか?

+0

$ poolオブジェクトがnullの可能性がありますので、アプリケーションプールオブジェクトの選択方法に問題がある可能性があります –

答えて

2

つ停止したが、。他のアプリケーションプールはリサイクルされていました。上記のコードは他の誰でも使用することができます。

1

あなたはADSIをリサイクルしようとすることができます。エラーの原因となったアプリケーションプールの

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

このメソッドを試してエラーをスローしました: "2"引数で "Invoke" s): "呼び出しの対象を で例外がスローされました。" D:¥scripts¥deployment¥inc¥deploy.ps1:124 char:28 + $ pool.psbase.invoke(<<<< "リサイクル") –

3

元の質問はIIS6のためだったが、私はだから私は戻ってAPPCMDを呼び出すに落とし、それがうまく働いたのWindows 2012上でWebAdministrationモジュールの再起動-WebAppPoolを使用して似たように走った:、時には

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

ソリューションをオーバーエンジニアリングする必要はありません。ある日、他の人に役立つことを願っています。

+0

Bewcに感謝しました。はるかに簡単。 –

関連する問題