【问题标题】:Finding Version of IIS using powershell使用PowerShell查找IIS版本
【发布时间】:2013-05-28 05:36:54
【问题描述】:

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

以下是我使用的查询。

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

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

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

【问题讨论】:

标签: iis powershell


【解决方案1】:

你可以试试:

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

【讨论】:

  • 这将给出正确答案,但如果有相同的 WMI 或 Powershell 查询,那就太好了。
  • @user1805353 很抱歉,我不知道其他方法,也许 powershell 'webadministration' 模块可以提供帮助。
  • 这不可靠,因为它可以在没有安装 IIS 的服务器上返回值。无论他们是否曾经开启过 IIS,我现在还不能确认,但我可以肯定地确认 IIS 没有运行/安装在某些具有此 reg 密钥的机器上。
  • @Rob,@ CB。 ,除此之外,是否有来自微软的官方来源指出HKLM:\SOFTWARE\Microsoft\InetStp\VersionString 是获取版本的方式?否则,这种逆向工程可能会在将来更改键/值时严重破坏......
  • 我正在寻找未安装 IIS 的服务器。因此,在我获取项目属性之前,我首先检查项目是否存在。 gci HKLM:\软件\微软| ?{$_.Name -match 'InetStp'}
【解决方案2】:

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

以下命令帮助我在 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)"
    

    【讨论】:

    • 老实说,我认为这应该使用[version] 类型而不是十进制。如果有 10.10 版本,如果使用小数类型,它将低于 10.2 版本。
    【解决方案4】:

    这是我根据@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
    }
    

    【讨论】:

      【解决方案5】:

      对于纯粹的版本,我更喜欢检查 w3wp 可执行文件的信息。 Per the "how-to" article from MSFT:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-11-11
        • 2011-01-16
        • 1970-01-01
        • 2016-03-13
        • 1970-01-01
        • 2022-01-10
        • 2018-10-31
        • 2013-12-28
        相关资源
        最近更新 更多