2013-05-28 4 views
17

Chcę znaleźć wersję IIS przy użyciu zapytania powershell (lub WMI).Znajdowanie wersji IIS przy użyciu programu Power Shell

Poniżej znajduje się zapytanie, którego użyłem.

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

Przetestowałem to zapytanie przy użyciu konsoli Power Shell na komputerze z systemem Windows 8 i programem "IIS 8". Jednak wynikiem jest 7, gdzie oczekiwana wersja to 8.

Czy ktoś może mi pomóc rozwiązać ten problem ?.

+0

Odpowiedzi na to pytanie mogą pomóc: ["Jak ustalić zainstalowaną wersję IIS"] (http://stackoverflow.com/questions/435050/how-to-determine-installed-iis-version) –

Odpowiedz

20

Można spróbować:

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

To da prawidłową odpowiedź, ale byłoby świetnie, gdyby istniało zapytanie WMI lub Powershell dotyczące tego samego. –

+0

@ user1805353 Przykro mi, ale nie jestem świadomy innych metod, może pomóc moduł "administracja" programu PowerShell. –

+1

Nie jest to niezawodne, ponieważ może zwracać wartości na serwerach, na których nie zainstalowano usług IIS. Niezależnie od tego, czy kiedyś były włączone usługi IIS, nie mogę jeszcze potwierdzić, ale mogę zdecydowanie potwierdzić, że usługi IIS nie działają/są instalowane na niektórych komputerach z tym kluczem rejestru. – Robin

1

Oto mały funkcja ScriptBlock że stworzony w oparciu o odpowiedź od @ C.B. uzyskać wersję IIS z komputera zdalnego.

$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 
} 
3

Aby uzyskać wartość dziesiętną dla porównania zamówień.

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

Szczerze mówiąc, myślę, że powinno to używać typu '[wersja]' zamiast dziesiętnego. Jeśli byłaby wersja 10.10, byłaby mniejsza niż wersja 10.2, gdyby użyto typu dziesiętnego. – arjabbar

1

Mimo że wątek jest trochę stary, jest to link, który wylądowałem pierwszy. Dzięki temu wiesz, co znalazłem.

Poniższe polecenie pomogło mi znaleźć wersję IIS poprawnie na IIS 8.5 (Windows 2012 R2) i 7.5 Windows 7 SP1.

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

referencyjny:.

https://forums.iis.net/p/1171695/1984536.aspx: Odpowiedź od f00_beard