使用PowerShell查找IIS版本

24

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

以下是我使用的查询。

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

我在一台安装有‘IIS 8’的‘Windows 8’电脑上使用powershell控制台测试了这个查询。但结果是7,而期望的版本号是8。

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


这个问题的答案可能会有所帮助:"如何确定已安装的IIS版本" - Enrico Campidoglio
5个回答

31

您可以尝试:

get-itemproperty HKLM:\SOFTWARE\Microsoft\InetStp\  | select setupstring,versionstring 

这将给出正确的答案,但如果有相应的 WMI 或 Powershell 查询,那就更好了。 - Sebastian Xavier
@user1805353 对不起,我不知道其他的方法,也许PowerShell的“webadministration”模块可以帮助你。 - CB.
1
这不可靠,因为它可能会在没有安装IIS的服务器上返回值。我还不能确认它们曾经是否安装过IIS,但我可以确定一些拥有此注册表键的机器上没有运行/安装IIS。 - Robin
1
@Rob,@CB。除此之外,是否有微软的官方来源说明HKLM:\SOFTWARE\Microsoft\InetStp\VersionString是获取版本的方式?否则,这种逆向工程在键/值被更改时可能会严重破坏... - Pacerier
我正在寻找没有安装IIS的服务器。因此,在执行get-itemproperty之前,我首先检查该项是否存在。gci HKLM:\SOFTWARE\Microsoft | ?{$_.Name -match 'InetStp'} - Kirt Carson

7

尽管这个帖子有点旧了,但这是我首先找到的链接。所以我想让你知道我发现了什么。

以下命令帮助我在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 的回答


3

如果您需要进行订单比较,而且需要小数值。

$iisInfo = Get-ItemProperty HKLM:\SOFTWARE\Microsoft\InetStp\
$version = [decimal]"$($iisInfo.MajorVersion).$($iisInfo.MinorVersion)"

1
老实说,我认为这应该使用“[版本]”类型而不是十进制。如果有一个版本10.10,如果使用十进制类型,则它将小于版本10.2。 - arjabbar

1
这是我基于@C.B.的答案创建的一个小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
}

0

就版本而言,我更喜欢检查w3wp可执行文件上的信息。 根据微软的“如何”文章

    If(Test-Path $w3wpPath) { 
        $productProperty = Get-ItemProperty -Path $w3wpPath 
        Write-Host $productProperty.VersionInfo.ProductVersion 
    } 
    Else { 
        Write-Host "Not find IIS." 
    } 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接