Jak wykryć każdy system operacyjny Windows jest używany w PowerShell

2

Chciałbym sprawdzić, która wersja systemu Windows jest używana na zdalnym komputerze, używam tego polecenia:

$version=[Environment]::OSVersion.Version | % {"{0}.{1}.{2}" -f $_.Major,$_.Minor,$_.Build}

Otrzymuję wynik na przykład Windows 7: 6.1.7600

ale znalazłem problem:

Windows Server 2012 R2 ma: 6.1.9600

i Windows 8.1: 6.1.9600

więc zastanawiam się, czy istnieje inne rozwiązanie, aby uzyskać wersję systemu Windows?

Hkm Mahjoub
źródło

Odpowiedzi:

6

Innym rozwiązaniem byłoby uzyskanie podpisu za pośrednictwem CIM. Myślę, że jest najbliżej tego, czego chcesz. Można go używać do sprawdzania maszyn lokalnych i zdalnych.


Lokalny:

Get-CimInstance Win32_Operatingsystem | Select-Object -expand Caption

Przykładowe dane wyjściowe:

PS C:\WINDOWS\system32> Get-CimInstance Win32_Operatingsystem | select -expand Caption
Microsoft Windows 10 Pro

Zdalny:

Dodaj -computernameparametr doGet-CimInstance

Przykładowe dane wyjściowe:

PS C:\WINDOWS\system32> Get-CimInstance Win32_Operatingsystem -ComputerName xy | select -expand Caption
Microsoft Windows 7 Professional

Uruchom, Get-CimInstance Win32_Operatingsystem | fl *aby zobaczyć, które właściwości możesz dodatkowo wybrać, aby uzyskać pożądany wynik.

SimonS
źródło
dziękuję bardzo, proszę pana! to bardzo przydatne .. Naprawdę doceniam twoją pomoc
Hkm Mahjoub
Ta metoda była przestarzała w systemie Windows 8.1. Zobacz ten link, aby uzyskać szczegółowe informacje.
Slogmeister Extraordinaire
Edytowano i zmieniono Get-WmiObjectnaGet-CimInstance
SimonS
1

Zastanawiam się, czy istnieje inne rozwiązanie, aby uzyskać wersję systemu Windows?

Użyj następującego polecenia, aby pobrać pełny ciąg znaków wersji (który zawiera nazwę, wersję i numer dodatku Service Pack:

[Environment]::OSVersion.VersionString

Przykładowe dane wyjściowe:

PS F:\test> [Environment]::OSVersion.VersionString
Microsoft Windows NT 6.1.7601 Service Pack 1
PS F:\test> 
DavidPostill
źródło