IIS6 列出应用程序池正在运行的 .net 版本

2024-01-07

我想枚举服务器上运行的应用程序池。在 IIS7 中,我可以通过 WMI WIn32_Process 获取 .net 版本,但在 IIS6 中不存在。如何获取工作进程/应用程序池正在运行的 .net 版本?

例如:

默认应用程序池 v2.0.50727

在 IIS6 中,.Net 在 ASP.NET 选项卡下的虚拟目录中设置,应用程序池在虚拟目录选项卡下设置。仅供参考:我正在运行 Windows 2003 SP2 IIS6。


IIS6 应用程序池的问题在于,与 IIS7 不同,它们不知道正在加载到其中的 .NET Framework 版本。

IIS6 websites确定站点或子应用程序的脚本映射指向的 ASP.NET 版本将哪个 .NET Framework 运行时加载到池中。工作进程只会盲目地加载映射到扩展名(或通配符映射中定义的任何内容)的必需 ISAPI DLL。

这种旧方法通常会造成很多麻烦,其中分配到同一池的两个不同站点可能被配置为运行不同版本的 ASP.NET,并且您会得到臭名昭著的结果:

...并且以下事件被记录到 Windows 应用程序日志中:



Event Type: Error
Event Source:   ASP.NET 2.0.50727.0
Event Category: None
Event ID:   1062
Date:       12/01/2011
Time:       12:31:43
User:       N/A
Computer:   KK-DEBUG
Description:
It is not possible to run two different versions of ASP.NET in the same 
IIS process. Please use the IIS Administration Tool to reconfigure your
server to run the application in a separate process.
  

确定应用程序池配置运行的 .NET 版本的唯一方法是遍历分配该池的每个站点并检查原始脚本映射。

唯一的问题是(例如)无论出于何种原因,您有一个配置错误的站点(或子应用程序),该站点(或子应用程序)不再使用,并且被设置为使用不同版本的 ASP.NET,例如:



Site                         .NET Version   Application Pool 
============================================================
WebSite1                     ASP.NET 4.0    AppPool1
WebSite2 (no longer used)    ASP.NET 2.0    AppPool1
  

在这种情况下,您必须决定哪个站点优先确定框架版本。

此 PowerShell 脚本可以帮助您确定每个池中使用的 ASP.NET 版本:

# 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 }

它仅遍历根级别的站点,不会递归地遍历每个站点来识别子应用程序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IIS6 列出应用程序池正在运行的 .net 版本 的相关文章

  • 从 Powershell 更新计划任务脚本

    我正在尝试编写一个每天运行一次的 Powershell 脚本 它将执行的众多功能之一是确保脚本本身是最新的 我的问题是 由于我对脚本进行了版本控制 因此我需要更新从脚本中创建的计划任务 我在这里考虑了两种不同的方法 其中我也无法弄清楚 我最
  • 如何获取 64 位的 pshome 路径?

    32 位的主文件夹路径可以使用 PSHome多变的 c Windows System32 WindowsPowerShell v1 0 如何访问包含 64 位版本路径的变量 c Windows SysWOW64 WindowsPowerSh
  • 如何使用PowerShell脚本远程启动/停止IIS 6.0/7.0?

    我有两台服务器服务器 A 和服务器 B 我想使用 Powershell 脚本从服务器 B 远程停止服务器 A 最简单的方法之一就是使用命令行执行PsExec http www microsoft com technet sysinterna
  • “固定请求数”后应用程序池回收

    IIS的应用程序池设置为 固定请求数 后回收有什么影响 假设这个数字是100 第99个人连接到我的网站 那么第100个人来了 就会触发应用程序池回收 这是否意味着会话 1 99 的所有会话信息都将丢失 进程内会话将在应用程序池工作进程重新启
  • 如何从 PowerShell 指定应用程序池身份用户和密码

    我在自动化 Web 应用程序设置和使用应用程序池标识适当配置 IIS 方面遇到了很多困难 我在用 PowerShell 编写的 Web 应用程序部署脚本中执行此操作 我的要求是我需要 PowerShell 脚本将应用程序池身份用户设置为特定
  • Powershell 查询的升序和降序

    下面的查询将列出 powershell 中的 cmdlet get command CommandType cmdlet Group Object Property verb 因为我需要按降序对列数进行排序 然后按升序对列进行命名 以下查询
  • 替换 CSV 文件中的引号和特殊字符的一些难题

    我在处理一些需要清理并加载到数据库中的 CSV 文件时遇到了一些难题 我相当擅长使用 PowerShell 但不擅长正则表达式和 csv 列操作 这是我遇到的问题 我正在使用的 CSV 文件中有一个 注释 字段 可以包含各种不同的字符 主要
  • 从输出中删除空行

    我有这个脚本 for true Write Host Get Date UFormat Y m d H M S ping n 1 10 10 50 203 Select String SimpleMatch Pinging Context
  • Powershell 中的“$”是什么?

    是什么意思 在 Powershell 中 Edit TechNet 答案 http technet microsoft com en us library hh847768 aspx同义反复 没有解释 成功 或 失败 的含义 包含上次操作的
  • Powershell v5.1 Invoke-RestMethod 并绕过代理

    我目前使用的是 Powershell V5 1 并且希望在 Invoke RestMethod 命令上绕过 Internet Explorer 代理 在 Powershell V6 中 有 NoProxy 选项 指示 cmdlet 将不使用
  • 无法索引空数组

    我正在使用一个模板 该模板根据服务器备份是否成功的条件设置单元格颜色 我有下面的代码 它不断抛出错误 无法索引到空数组 Cannot index into a null array At C Users admin Desktop new
  • 在Windows中根据修改日期删除数百万个文件的最有效方法

    目标 使用脚本运行 500 万至 1000 万个 XML 文件并评估其日期 如果超过 90 天则删除该文件 该脚本将每天运行 问题 使用 powershell Get ChildItem recurse 会导致脚本锁定并无法删除任何文件 我
  • 是否可以在 PowerShell 中使 IndexOf 不区分大小写?

    我在终端服务器中由查询会话命令组成的数组中搜索索引时遇到问题 这是有问题的脚本 Array of logged users in terminal servers a Get RDUsersession CollectionName BLA
  • 如何在 Azure PowerShell 函数中导入模块?

    我尝试从函数查询天蓝色表 使用 Get AzTableRow 在我的笔记本电脑上工作得很好 但模块 aztable 不存在于天蓝色功能中 因此我得到的只是红屏 有办法安装吗 谢谢 大卫 您无需自行在 Azure Function 中安装 A
  • Powershell,如何添加共享文件夹的权限

    我有以下创建共享文件夹的代码 if Test Path c myFolder New Item Path c myFolder ItemType Directory If GET WMIOBJECT Win32 Share Filter N
  • PowerShell 中哈希表的并集和交集

    In PowerShell 中的并集和交集 https stackoverflow com questions 8609204 union and intersection in powershell描述了用于数组集合操作的酷单行代码 我想
  • 当存在另一个参数时在 PowerShell 中需要参数

    到目前为止我读到的所有内容都告诉我这应该有效 这是一个用于自动从 AD 帐户转出的脚本 我希望它的工作方式是 如果设置了 TransferHomeDrive 开关 那么它将需要旧服务器和新服务器的名称 我相信我应该能够通过参数集来做到这一点
  • 使用 PEM 证书验证 Powershell 中的 XML 签名

    我正在尝试创建一个 powershell 脚本来使用 XML 文档中的数据 然而 在进行任何工作之前 我需要通过验证签名来验证 XML 没有被篡改 我有一份用于以 PEM 格式签署 XML 的证书的公钥副本 但我不知道如何让 powersh
  • 查找“未找到身份”的角色分配的可靠方法是什么?在 Azure 上使用 Powershell?

    如果您在 Azure 中分配角色 然后在删除角色分配之前删除该身份 则会出现 找不到身份 的情况 健康 状况 它是无害的 但它会占用角色分配空位并使角色分配列表变得混乱 我想找到并删除这些 我想这个 Get AzRoleAssignment
  • 对于 PowerShell cmdlet,我是否始终可以将脚本块传递给字符串参数?

    我正在查看 PowerShell 的文档Rename Itemcmdlet 并且有一个这样的例子 Get ChildItem txt Rename Item NewName name Replace txt log 此示例演示如何使用 Re

随机推荐