我想审核 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 }