Is it possible to recycle an IIS7 app pool from the command line, on a different machine?
I've found APPCMD (appcmd recycle apppool my-app-pool
), but it only operates on the host it's run on, AFAICT.
I heard a rumor there might be a way to do it with Powershell, but I know nothing about that, and I'm apparently not very good at googling for it.
I'm using Vista / Server 2008, if that matters.
EDIT: I found something called WinRM that somebody claims is able to run APPCMD itself, but I'm not sure exactly how, yet.
Ken, if this is run from CMD you could do it with PSExec. This requires no installation on the server you want to access.
Simply copy the contents of the zip to your System32 file (don't include the ELUA or the DLL file) of the computer you want to remote FROM.
Then enter CMD
type
Psexec \\{Computer Name of ISS7 Server} %systemroot%\System32\inetsrv\appcmd recycle apppool my-app-pool
If you are not on the same domain on an domain admin account you will need to enter credentials for administrative access. For more information simply type psexec in a command line with no arguments.
To do it remotely from PowerShell you need to either use PowerShell remoting, or use WMI.
It's actually very simple using the Invoke-WMIMethod PowerShell cmdlet, but you have to specify
-Authentication PacketPrivacy
... and if you need to specify different credentials, you can do that with parameter-Credential (Get-Credential)
... here's an example:I wrote a nice function to wrap all that up: http://poshcode.org/2466
If command line is your choise, PsExec seems to be the solution, but for mission critical tasks I wouldn't recommend it. The reason is the following: PsExec has problems with multiple runs.
I prefer to use API for such purposes.
Similar to @Jeff's answer, with Powershell remoting it would be:
Enter-PSSession -ComputerName <your server> -Credential <username, or (Get-Credential)>
Then in the interactive session, then:
appcmd recycle apppool my-app-pool
to restart the app pool.
Recycle AppPool in PowerShell
In this example: MSExchangeSyncAppPool
For completeness, there is also ADSI Service Provider for IIS (Warning: Outdated technology):