23

我希望使用 powershell(或 WMI)查询来查找 IIS 的版本。

以下是我使用的查询。

Get-WmiObject -namespace "root\microsoftiisv2" -query "select MajorIIsVersionNumber from IISWebInfo"

我在带有“IIS 8”的“Windows 8”PC 中使用 powershell 控制台测试了这个查询。但结果是 7 ,其中预期的版本号是 8。

有人可以帮我解决这个问题吗?

4

5 回答 5

29

你可以试试:

get-itemproperty HKLM:\SOFTWARE\Microsoft\InetStp\  | select setupstring,versionstring 
于 2013-05-28T05:40:36.727 回答
6

尽管线程有点旧,但这是我首先登陆的链接。所以让你知道我发现了什么。

下面的命令帮助我在 IIS 8.5 (Windows 2012 R2) 和 7.5 Windows 7 SP1 上正确找到了 IIS 版本。

[System.Diagnostics.FileVersionInfo]::GetVersionInfo("$env:SystemRoot\system32\inetsrv\InetMgr.exe").ProductVersion

参考:

https://forums.iis.net/p/1171695/1984536.aspx:来自 f00_beard 的回答

于 2016-10-04T09:07:54.777 回答
3

如果您想要十进制值进行订单比较。

$iisInfo = Get-ItemProperty HKLM:\SOFTWARE\Microsoft\InetStp\
$version = [decimal]"$($iisInfo.MajorVersion).$($iisInfo.MinorVersion)"
于 2015-05-29T15:30:22.040 回答
1

这是我根据@CB 的答案创建的一个小 ScriptBlock 函数,用于从远程计算机获取 IIS 版本。

$pwd = convertto-securestring "yourstrongpasswordhere" -asplaintext -force
$cred=new-object -typename System.Management.Automation.PSCredential -argumentlist "machinenamehere\adminusernamehere",$pwd

$iisversion= Invoke-Command -ComputerName $machineName -ScriptBlock { 

    $(get-itemproperty HKLM:\SOFTWARE\Microsoft\InetStp\).setupstring

} -Credential $cred

Write-Host iisversion = $iisversion
If($iisversion -like '*IIS 6*'){
    Write-Host This server uses IIS6
}

If($iisversion -like '*IIS 7*'){
    Write-Host This server uses IIS7
}
于 2013-08-23T17:25:45.700 回答
0

对于纯粹的版本,我更喜欢检查 w3wp 可执行文件的信息。 根据 MSFT 的“操作方法”文章

    If(Test-Path $w3wpPath) { 
        $productProperty = Get-ItemProperty -Path $w3wpPath 
        Write-Host $productProperty.VersionInfo.ProductVersion 
    } 
    Else { 
        Write-Host "Not find IIS." 
    } 
于 2020-11-27T18:12:01.877 回答