To tidy up the applications on the IIS of my development PC, I wanted to find out which IIS application (and their virtual directories) point to which physical paths.
Starting out with this SO answer and some help from MSDN I quickly assembled this PS solution for the task:
$dummy = [System.Reflection.Assembly]::LoadFrom( "c:\windows\System32\InetSrv\Microsoft.Web.Administration.dll") $srvmgr = new-object Microsoft.Web.Administration.ServerManager write-Output ("site`tstate`tapp`tvirtdir`tphys.path") foreach($site in $srvmgr.Sites | Sort-Object Name ) { foreach($app in $site.Applications | Sort-Object Path ) { foreach($virt in $app.VirtualDirectories | Sort-Object Path ) { write-Output ($site.Name + "`t" + $site.State + "`t" + $app.Path + "`t" + $virt.Path + "`t" + $virt.PhysicalPath) } } }
This piece of code generates a tab-separated list of physical paths referenced by IIS sites, applications, and virtual directories. The application’s physical path is contained in a virtual directory with Path=”/”.
Note that the script must be “run as administrator” from the PS prompt or the PowerShell ISE.
Thanks for the script. I found it helpful.