如何使用Powershell枚举IIS网站并找到每个网站的应用程序池?

时间:2014-08-01 21:26:26

标签: powershell iis wmi

我可以使用以下网址搜索网站:

Get-WmiObject -Namespace "root\WebAdministration" -Class Site -Authentication PacketPrivacy -ComputerName $servers

我可以使用以下方式列出应用程序池:

Get-WmiObject -computer $servers -Namespace root\MicrosoftIISv2 -Class IIsApplicationPoolSetting -Impersonation Impersonate -Authentication PacketPrivacy

如何将这些链接在一起以查找哪个应用池与哪个网站相关联?它是带有IIS 7.5的Windows Server 2008 R2服务器。

3 个答案:

答案 0 :(得分:21)

使用网络管理模块:

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
}

答案 1 :(得分:2)

尝试以下方法:

[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)
}

上面的脚本列出了服务器上的每个站点,并打印了每个站点的根应用程序池名称。

答案 2 :(得分:0)

如果您不想使用IIS:\ path,这是另一个选项。

$site = Get-IISSite -Name 'my-site'
$appPool = Get-IISAppPool -Name $site.Applications[0].ApplicationPoolName