Frage Recyceln Sie den Remote-IIS-App-Pool über die Befehlszeile?


Ist es möglich, einen IIS7-App-Pool von der Befehlszeile auf einem anderen Computer zu recyceln?

Ich habe APPCMD gefunden (appcmd recycle apppool my-app-pool), aber es funktioniert nur auf dem Host, auf dem es läuft, AFAICT.

Ich hörte ein Gerücht, dass es einen Weg geben könnte, es mit Powershell zu machen, aber ich weiß nichts darüber, und ich bin anscheinend nicht sehr gut darin, dafür zu googeln.

Ich benutze Vista / Server 2008, wenn das wichtig ist.

EDIT: Ich habe etwas namens gefunden WinRM dass jemand behauptet, APPCMD selbst ausführen zu können, aber ich weiß noch nicht genau, wie.


25
2018-01-13 22:06


Ursprung




Antworten:


Ken, wenn das von CMD läuft, könntest du es machen PSExec. Dies erfordert keine Installation auf dem Server, auf den Sie zugreifen möchten.

Kopieren Sie einfach den Inhalt des Postleitzahl zu Ihrer System32-Datei (enthalten Sie nicht die ELUA- oder die DLL-Datei) des Computers, von dem Sie FROM fernsteuern möchten.
Dann Geben Sie CMD ein
Art
Psexec \\{Computer Name of ISS7 Server} %systemroot%\System32\inetsrv\appcmd recycle apppool my-app-pool 

Wenn Sie sich nicht in derselben Domäne eines Domänenadministratorkontos befinden, müssen Sie Anmeldeinformationen für den Administratorzugriff eingeben. Für weitere Informationen geben Sie einfach psexec in eine Befehlszeile ohne Argumente ein.


28
2018-01-17 19:16



Der Speicherort von AppCmd.exe (% systemroot% \ system32 \ inetsrv) ist nicht automatisch Teil des PATH. Sie können es entweder zu Ihrem Pfad hinzufügen oder appcmd ausführen mit: "% systemroot% \ system32 \ inetsrv \ AppCmd.exe" - ashtonium
Sie geben den Remote-Befehl für PsExec nicht an; Sie senden den Befehlsnamen gefolgt von den Argumenten, die alle durch Leerzeichen getrennt sind. Also sollte Befehl sein: Psexec \\computer c:\windows\system32\inetsrv\appcmd.exe" recycle apppool AppPoolName - Carl G


Um es remote über die PowerShell auszuführen, müssen Sie entweder PowerShell-Remoting verwenden oder WMI verwenden.

Das Invoke-WMIMethod PowerShell-Cmdlet ist sehr einfach, Sie müssen es jedoch angeben -Authentication PacketPrivacy  ... und wenn Sie andere Anmeldeinformationen angeben müssen, können Sie dies mit Parameter tun -Credential (Get-Credential) ... hier ein Beispiel:

$pc = "serverName"

## List the app pools, note the __RELPATH of the one you want to kill:
Get-WMIObject IISApplicationPool 
              -Computer $pc 
              -Namespace root\MicrosoftIISv2 
              -Authentication PacketPrivacy 

## Recycle a specific one:
$Name = "W3SVC/APPPOOLS/ASP.NET v4.0 Classic"  ## This is the Name from above
$Path = "IISApplicationPool.Name='$Name'"      ## This is the __RELPATH

Invoke-WMIMethod Recycle 
                 -Path $Path 
                 -Computer $pc 
                 -Namespace root\MicrosoftIISv2 
                 -Authentication PacketPrivacy

Ich habe eine nette Funktion geschrieben, um all das zu verpacken: http://poshcode.org/2466


6
2018-01-18 19:35



Möglicherweise müssen Sie "IIS 6 WMI Compatibility" auf IIS7 aktivieren, damit der Namespace root \ MicrosoftIISv2 verfügbar ist. forums.iis.net/t/1158882.aspx - Brian Low


Wenn Befehlszeile Ihre Wahl ist, PsExec scheint die Lösung zu sein, aber für missionskritische Aufgaben würde ich es nicht empfehlen. Der Grund ist folgender: PsExec hat Probleme mit mehreren Läufen.

Ich bevorzuge API für solche Zwecke zu verwenden.

  1. WMI wird die beschriebene Aufgabe erfüllen Hier (meine Lieblingslösung).
  2. Alternativ können Sie verwenden Server Administrator API. Es ermöglicht die Verwaltung von Anwendungspools auf Fernbedienung Computer, wenn Sie Ihren Code mit den entsprechenden Anmeldeinformationen ausführen.

3
2017-11-30 12:20





Ähnlich wie @ Jeffs Antwort wäre es mit Powershell Remoting:

Enter-PSSession -ComputerName <your server> -Credential <username, or (Get-Credential)>

Dann in der interaktiven Sitzung, dann:

appcmd recycle apppool my-app-pool

um den App-Pool neu zu starten.


1
2017-12-03 18:02





Recyceln Sie AppPool in PowerShell

In diesem Beispiel: MSExchangeSyncAppPool

$appPool = Get-WmiObject -Authentication PacketPrivacy -Impersonation Impersonate -ComputerName (hostname) -namespace "root/MicrosoftIISv2" -class IIsApplicationPool | Where-Object {$_.Name -eq "W3SVC/AppPools/MSExchangeSyncAppPool" }
$appPool.Recycle()

0
2017-08-07 08:36