2009-02-26 4 views
3

Il semble qu'une récente mise à jour de Windows ait interrompu certaines fonctionnalités que j'utilisais pour recycler les pools d'applications IIS6, car cela fonctionne depuis des mois.Recyclage du pool d'applications IIS à l'aide de PowerShell: "Exception calling Recycle"

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

la fonction que j'utilisais pour recycler les pools d'applications était:

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

Toute idée sur ce que le problème et comment je devrais aborder ce sujet?

+0

il semble que l'objet $ pool soit null, ce qui pose problème lors de la sélection des objets du pool d'applications –

Répondre

2

L'une des piscines d'application a été arrêté, ce qui était à l'origine de l'erreur. Les autres pools d'applications étaient bien recyclés. Le code ci-dessus est autorisé à utiliser pour quelqu'un d'autre.

1

Vous pouvez essayer de recycler avec ADSI:

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

a essayé cette méthode en lançant une erreur: Exception appelant "Invoke" avec l'argument "2" (s): "Exception a été levée par la cible d'une invocation." À D: \ scripts \ déploiement \ inc \ deploy.ps1: 124 char: 28 + $ pool.psbase.invoke (<<<< "recycle") –

3

La question initiale était pour IIS6, mais je suis tombé sur quelque chose de similaire en utilisant la Restart-WebAppPool de WebAdministration Module sur Windows 2012. Je retombé à appeler APPCMD, et qui a bien fonctionné:

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

Parfois, Vous n'avez pas à sur-concevoir la solution. J'espère que cela aide les autres un jour.

+0

Merci Bewc, ne s'est pas rendu compte que c'était possible. Beaucoup plus simple. –

Questions connexes