How do I enumerate IIS websites using Powershell and find the app pool for each?
Use the webadministration module:
Import-Module WebAdministration
dir IIS:\Sites # Lists all sites
dir IIS:\AppPools # Lists all app pools and applications
# List all sites, applications and appPools
dir IIS:\Sites | ForEach-Object {
# Web site name
$_.Name
# Site's app pool
$_.applicationPool
# Any web applications on the site + their app pools
Get-WebApplication -Site $_.Name
}
Try the following:
[Void][Reflection.Assembly]::LoadWithPartialName("Microsoft.Web.Administration")
$sm = New-Object Microsoft.Web.Administration.ServerManager
foreach($site in $sm.Sites)
{
$root = $site.Applications | where { $_.Path -eq "/" }
Write-Output ("Site: " + $site.Name + " | Pool: " + $root.ApplicationPoolName)
}
The script above lists every site on the server and prints the root application pool name for each site.