Last night an attendee at NEBytes asked me how he can see the state of an application pool in IIS using PowerShell. I'm using IIS 7.5, but the first method is the way to do it in IIS 7.0 too...
Using the PowerShell provider you can browse through the components of IIS like you would the filesystem - it's presented like a drive*, so you can do dir iis: to see the top level containers. To work with application pools, you can move into their container with cd iis:\AppPools after which a dir will list the app pools along with their states. For each of the application pools you'll seeing a little bit of information as defined by the default formatting. You can see all the details of the first one with by piping to a formatting cmdlet, for example dir | Format-List *
That will give you the properties of the application pool, but not what you can do with it. Piping instead to Get-Member will tell you not only the properties of the object, but also the methods that it exposes, like start/stop/recycle.
New in IIS 7.5's webadministration module for PowerShell are a set of cmdlets for working with IIS, including application pools. The cmdlet that answers the original question is Get-WebAppPoolState, and there are cmdlets for starting, stopping and recycling which are Start-WebAppPool, Stop-WebAppPool and Restart-WebAppPool (not recycle because PowerShell has a restriction on verbs in cmdlet names).
Those aren't especially hard to remember, but if you wanted to know all of the cmdlets that relate to IIS application pools, you can do Get-Command *apppool*, or to see all of the commands in the webadministration module, Get-Command -PSSnapin webadministration.
* Type Get-PSDrive to see what else has been presented in this way by the providers installed on your system.