Как перечислить сайты IIS с помощью Powershell и найти пул приложений для каждого?
Я могу искать сайты, используя:
Get-WmiObject -Namespace "root\WebAdministration" -Class Site -Authentication PacketPrivacy -ComputerName $servers
И я могу перечислить пулы приложений, используя:
Get-WmiObject -computer $servers -Namespace root\MicrosoftIISv2 -Class IIsApplicationPoolSetting -Impersonation Impersonate -Authentication PacketPrivacy
Как связать их вместе, чтобы найти, какой пул приложений связан с каким веб-сайтом? Это сервер Windows Server 2008 R2 с IIS 7.5.
Ответы
Ответ 1
Попробуйте следующее:
[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)
}
В приведенном ниже script перечислены все сайты на сервере и печатает имя пула корневых приложений для каждого сайта.
Ответ 2
Используйте модуль webadministration:
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 app pool
$_.applicationPool
# Any web applications on the site + their app pools
Get-WebApplication -Site $_.Name
}
Ответ 3
Здесь другой вариант, если вы не хотите использовать IIS:\путь.
$site = Get-IISSite -Name 'my-site'
$appPool = Get-IISAppPool -Name $site.Applications[0].ApplicationPoolName