Friday, August 11, 2006

Cracked it.

Finally, found a way to AppUnload IIS sites using PowerShell.

New-Object System.DirectoryServices.DirectoryEntry "IIS:// servername/W3SVC" | %{ $_.get_Children() } | where { $_.get_SchemaClassName() -eq "IIsWebServer" } | where { $_.serverComment -eq " sitename" } | %{ $site=$_;"-----";$site.get_Name(); $site.ServerComment; $site.get_Children() | where { $_.get_SchemaClassName() -eq "IIsWebVirtualDir" } | %{ $_.Invoke("AppUnload") } }
where { $_.serverComment -eq " sitename" } is useful if you need to pick site via the "server comment", which is the name displayed in IIS. If you only have one site (like on XP), then you can remove/ignore this. Also, it prints out the site "name" (this will be a number) and "server comment", which isn't strictly necessary, but then at least you'll get an ideas what's going on.

The bit I got stuck on was that the full path to a the object that has "AppUnload" is "IIS:/localhost/W3SVC/1/ROOT" - I was trying to do it on the "IISWebServer" element...

No comments: