如何获取IIS服务器上每个运行应用对应的.NET版本
有两种主流方案可以实现一次性查询,其中PowerShell方案可一键拿到全量结果,同时兼容.NET Framework和.NET Core/.NET 5+版本的应用:
方法1:PowerShell 批量查询(推荐)
请以管理员身份启动PowerShell,执行对应脚本即可:
1.1 查询所有应用池配置的目标.NET版本
Import-Module WebAdministration Get-ChildItem IIS:\AppPools | Select-Object name, managedRuntimeVersion, autoStart, state | Format-Table -AutoSize
返回结果中managedRuntimeVersion列即为对应应用池配置的.NET Framework版本,若值为v4.0对应.NET Framework 4.x系列,值为空则代表应用池配置为无托管代码,一般对应.NET Core/.NET 5+应用。
1.2 查询正在运行的应用实际加载的.NET版本
如果需要确认应用实际运行的版本(比如配置了用更高版本运行时兼容执行的场景),可执行以下脚本:
Get-Process w3wp -ErrorAction SilentlyContinue | ForEach-Object { $clrVersion = $_.Modules | Where-Object {$_.FileName -like "*clr.dll" -or $_.FileName -like "*coreclr.dll"} | Select-Object -ExpandProperty FileVersionInfo -First 1 [PSCustomObject]@{ 应用池名称 = $_.MainModule.FileVersionInfo.ProductName.split(' ')[-1].Trim('()') 实际运行.NET版本 = $clrVersion.ProductVersion 进程ID = $_.Id } } | Format-Table -AutoSize
该脚本会直接读取运行中的w3wp进程加载的CLR核心模块版本,返回的就是应用实际运行的.NET版本。
方法2:IIS管理器手动查看
如果不方便执行脚本,可手动批量查看:
- 按下Win+R输入
inetmgr回车打开IIS管理器 - 点击左侧服务器节点下的「应用程序池」菜单
- 右侧列表的「.NET CLR 版本」列即为对应应用池配置的.NET Framework版本
- 针对标注「无托管代码」的.NET Core/.NET 5+应用,可进入应用根目录查看
runtimeconfig.json文件,确认其目标运行时版本。
注:如果应用配置了使用更高版本的运行时兼容执行,配置文件中的目标版本和实际运行版本可能存在差异,优先以进程加载的运行时模块版本为准。
内容的提问来源于stack exchange,提问作者Doctor Strange
相关产品推荐
相关产品推荐

