2009-02-26 2 views
3

Es sieht aus wie ein aktuellen Windows-Update einige Funktionen gebrochen war ich mit IIS6 Anwendungspools zu recyceln, da dies bis heute für Monate gearbeitet hat.Recycling IIS-Anwendungspool Powershell verwenden: „Ausnahme Aufruf Recycle“

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

die Funktion Ich war die Anwendungspools recyceln wurde mit:

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

Jede Idee, was das Problem ist und wie ich sollte dieser Ansatz?

+0

es sieht aus wie das $ Pool-Objekt möglicherweise Null, so muss es ein Problem sein mit, wie ich die Anwendungspoolobjekte –

Antwort

2

Eines der Anwendungspools wurde gestoppt, die den Fehler verursacht wurde. Die anderen Anwendungspools wurden ordnungsgemäß recycelt. Der obige Code ist in Ordnung für jemand anderen.

1

können Sie versuchen, mit ADSI zu recyceln:

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

ausprobiert diese Methode versuchen, einen Fehler zu werfen: Ausnahme Aufruf "Invoke" mit "2" Argument (e): „Ausnahme wurde von das Ziel für einen Aufruf ausgelöst.“ Bei D: \ scripts \ deployment \ inc \ deploy.ps1: 124 Zeichen: 28 + $ pool.psbase.invoke (<<<< "Recycling") –

3

Die ursprüngliche Frage war für IIS6, aber ich lief in etwas ähnlich dem WebAdministration Moduls Restart-WebAppPool unter Windows mit 2012. So fiel ich zurück appcmd zu nennen, und das hat gut funktioniert:

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

Manchmal, Sie müssen die Lösung nicht über Ingenieur. Hoffnung, die anderen eines Tages hilft.

+0

Dank BEWC, das nicht wusste war möglich. Viel einfacher. –