Recycle remote IIS app pool from the command line?

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:

$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

I wrote a nice function to wrap all that up: http://poshcode.org/2466