PowerShell获取.NET在IIS

时间:2017-06-01 12:43:10

标签: .net powershell iis

有没有办法使用PowerShell来获取在IIS中运行Web应用程序的.NET框架?

我已经能够使用以下内容获取网站名称,并看到应用程序池设置为“Clr4IntegratedAppPool”,但我没有看到确定网站本身运行的.NET版本的方法

为了澄清,我试图获取网站本身的.NET版本,而不是应用程序池。例如,如果Site1在AppPool1下运行版本4.6.2(设置为4.0),那么我试图进入4.6.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 )
}

3 个答案:

答案 0 :(得分:0)

这是一种方法

//top logo scroll function
function logoScroll() {
    $(window).scroll(function() {
        if ($(window).scrollTop() >= 50) {
            $(".navbar").css("top", "0px");
        } else {
            $(".navbar").css("top", "50px");
        }
    });
}

//hide top logo on load
var wdwWidth = $(window).width();
if (wdwWidth <= 991) {
    $(".navbar").css("top", 50);
    logoScroll();
} else {
    $(".navbar").css("top", "0px");
}

答案 1 :(得分:0)

您可以转到该站点的bin文件夹来迭代所有dll并识别这些dll的.NET框架版本。

Function Get-WebsiteDotNetVersion { 
    [CmdletBinding()] 
    Param 
    ( 
        [Parameter(Mandatory=$false)][String]$SiteName 
    ) 

    # get site root directory 
    $site = Get-WebSite -Name $SiteName 
    $binLocation = "$($site.physicalPath)\bin" 

    # get all dlls in bin folder 
    $dllFolder = Get-Item -Path $binLocation 
    $dlls = $dllFolder.GetFiles("*.dll") 

    # analyze dll .net version 
    $set = New-Object System.Collections.Generic.HashSet[String] 
    $dlls | ForEach-Object { 
        $set.Add([Reflection.Assembly]::ReflectionOnlyLoadFrom("$binLocation\$($_.Name)").ImageRuntimeVersion) | Out-Null 
    } 

    # print all dll .NET version 
    $set 
} 

有关详情,请参阅How to get .NET framework version of site running in IIS by PowerShell

答案 2 :(得分:0)

asp.net应用程序查看目标框架属性以找出要使用的.Net版本

<httpRuntime targetFramework="4.5" />

有关详细信息,请参阅此msdn。如果没有设置该属性,则将使用运行时4.0

因此,要正确找出网站版本,您需要

  • 获取应用程序池运行时版本。
  • 转到web.config文件并检查targetFramework是否存在。
    • 如果存在targetFramework,请执行
    • 如果没有,请使用应用程序池。运行

希望这有帮助!