如何列出每个 IIS6 网站正在使用哪个应用程序池?

如何列出每个 IIS6 网站正在使用哪个应用程序池?

我想审核 IIS6 服务器上的应用程序池,我想检查哪些网站与每个应用程序池及其运行的 .NET 版本相关。我该如何做才能做到这一点,而无需手动浏览界面并依次查看每个应用程序池?

答案1

使用iisapp 脚本列出应用程序池:

iisapp.vbs 

不幸的是,与 IIS7 不同,应用程序池不知道它们正在运行哪个 .NET 版本,它们只是加载站点请求的过滤器,因此您必须遍历站点并提取信息。 此 StackOverflow 答案有一个建议的脚本,用于浏览网站并列出其应用程序池和.NET 版本。

(脚本归功于 StackOverflow 的 @Kev)

# Walk sites
$allsites = ([adsi]"IIS://Localhost/W3SVC").children | where { $_.SchemaClassName -eq "IIsWebServer" }
$pools = @()

foreach($site in $allsites)
{
  $path = "IIS://Localhost/W3SVC/" + $site.Name + "/root"
  $siteRoot = [adsi]$path
  $sitePool = $siteRoot.AppPoolId

  $aspx = $siteRoot.ScriptMaps | where { $_.StartsWith(".aspx") }

  if( $aspx.Contains("v1.1")) {
    $runtime = "1.1"
  } elseif ($aspx.Contains("v2.0")) {
    $runtime = "2.0"
  } elseif( $aspx.Contains("v4.0")) {
    $runtime = "4.0"
  } else {
    $runtime = "Unknown"
  }

  $v =  @{AppPool = $siteRoot.AppPoolId; RunTime = $runtime; SiteId = $site.Name}
  $pools += $v
}

$pools | Sort-Object { $_.AppPool } | % { Write-Host $_.AppPool $_.SiteId $_.RunTime }

相关内容