PowerShell कमांड लाइन से विंडोज संस्करण कैसे खोजें


133

मुझे कैसे पता चलेगा कि मैं किस विंडोज संस्करण का उपयोग कर रहा हूं?

मैं PowerShell 2.0 का उपयोग कर रहा हूं और कोशिश कर रहा हूं:

PS C:\> ver
The term 'ver' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify tha
t the path is correct and try again.
At line:1 char:4
+ ver <<<< 
    + CategoryInfo          : ObjectNotFound: (ver:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

मैं यह कैसे करु?


4
आप 2019+ में यह देख रहे हैं तो जवाब है कि है की अनदेखी चिह्नित सही रूप में और सीधे जाकर एक है कि है सही । आपका स्वागत है।
BrainSlugs83

जवाबों:


186

चूंकि आपके पास .NET पुस्तकालय तक पहुंच है, इसलिए आप इस जानकारी को प्राप्त करने के लिए वर्ग की OSVersionसंपत्ति तक पहुंच सकते हैं System.Environment। संस्करण संख्या के लिए, Versionसंपत्ति है।

उदाहरण के लिए,

PS C:\> [System.Environment]::OSVersion.Version

Major  Minor  Build  Revision
-----  -----  -----  --------
6      1      7601   65536

विंडोज संस्करणों का विवरण यहां पाया जा सकता है


4
ध्यान दें कि विंडोज़ -10[Environment]::OSVersion में काम करता है , 10.OSVersion.Version.Major
yzorg

4
जब मैं winverइसे चलाता हूं तो मुझे 1607 संस्करण दिखाई देता है। लेकिन ऊपर की शक्तियां कमांड 1607 नहीं देती है। मुझे पॉवर्सशेल में यह "1607" नंबर कहां मिलेगा?
CMCDragonkai

6
@CMCDragonkai(Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name ReleaseId).ReleaseId
एंटोन क्राउग्लोव

3
इस विधि को विंडोज 8.1 के रूप में चित्रित किया गया था। विवरण के लिए इस लिंक को देखें।
Slogmeister Extraordinaire 15

1
@SlogmeisterExtraordinaire कमांड [System.Environment]::OSVersionको पदावनत नहीं किया गया था, जिस पद्धति का वह पृष्ठभूमि में उपयोग करता है उसे पदावनत कर दिया गया है। नए PS संस्करण बैकएंड व्यवहार बदल रहे हैं: github.com/PowerShell/PowerShell/issues/…
Randy

109
  1. अपने जवाब में जेफ नोट्स के रूप में विंडोज संस्करण संख्या प्राप्त करने के लिए , उपयोग करें:

    [Environment]::OSVersion

    यह ध्यान देने योग्य है कि परिणाम प्रकार का है [System.Version], इसलिए विंडोज 7 / विंडोज सर्वर 2008 R2 और बाद में, के लिए जाँच करना संभव है

    [Environment]::OSVersion.Version -ge (new-object 'Version' 6,1)

    हालांकि यह आपको यह नहीं बताएगा कि यह क्लाइंट है या सर्वर विंडोज, न ही वर्जन का नाम।

  2. Win32_OperatingSystemउदाहरण के लिए, WMI के वर्ग (हमेशा एकल उदाहरण) का उपयोग करें :

    (Get-WmiObject -class Win32_OperatingSystem).Caption

    कुछ इस तरह लौटेंगे

    Microsoft® Windows Server® 2008 मानक


61

दुर्भाग्य से अधिकांश अन्य उत्तर विंडोज 10 के लिए विशिष्ट जानकारी प्रदान नहीं करते हैं।

विंडोज 10 के स्वयं के संस्करण हैं: 1507, 1511, 1607, 1703, आदि । यही winverदिखाता है।

Powershell:
(Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion").ReleaseId

Command prompt (CMD.EXE):
Reg Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ReleaseId

सुपरसुसर पर संबंधित प्रश्न भी देखें ।

अन्य विंडोज़ संस्करणों के लिए उपयोग करें systeminfo। पॉवर्सशेल रैपर:

PS C:\> systeminfo /fo csv | ConvertFrom-Csv | select OS*, System*, Hotfix* | Format-List


OS Name             : Microsoft Windows 7 Enterprise
OS Version          : 6.1.7601 Service Pack 1 Build 7601
OS Manufacturer     : Microsoft Corporation
OS Configuration    : Standalone Workstation
OS Build Type       : Multiprocessor Free
System Type         : x64-based PC
System Locale       : ru;Russian
Hotfix(s)           : 274 Hotfix(s) Installed.,[01]: KB2849697,[02]: KB2849697,[03]:...

समान कमांड के लिए विंडोज 10 आउटपुट:

OS Name             : Microsoft Windows 10 Enterprise N 2016 LTSB
OS Version          : 10.0.14393 N/A Build 14393
OS Manufacturer     : Microsoft Corporation
OS Configuration    : Standalone Workstation
OS Build Type       : Multiprocessor Free
System Type         : x64-based PC
System Directory    : C:\Windows\system32
System Locale       : en-us;English (United States)
Hotfix(s)           : N/A

3
यह winverडेस्कटॉप और systeminfo सर्वर पर याद रखना आसान है । इसने मुझे वर्षों तक चकमा दिया है कि इस जानकारी को प्राप्त करने का कोई समान तरीका नहीं है।
मोर्टनबी

2
MS जानकारी के लिए बढ़िया लिंक जो वास्तव में उपयोगी है। यह ध्यान दिया जाना चाहिए कि Win8.1 (और नीचे?) के लिए दिखाई गई जानकारी है OS Version : 6.3.9600 N/A Build 9600:। इसलिए W81 से नीचे के संस्करणों में, (हमेशा अनदेखी) LTSB संस्करणों को देखना अधिक जानकारीपूर्ण हो सकता है। आउटपुट देखें: (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion").BuildLabExजो ऐसा लग सकता है 9600.19179.amd64fre.winblue_ltsb_escrow.181015-1847:। मेरा अनुमान है कि 181015हिस्सा बिल्ड की तारीख है, जबकि 1847निर्माण या रिलीज संस्करण है। आपको इसकी तुलना कर्नेल, हॉल से करने की आवश्यकता हो सकती है ।
Not2qubit

26
Get-WmiObject -Class Win32_OperatingSystem | ForEach-Object -MemberName Caption

या गोल्फ का

gwmi win32_operatingsystem | % caption

परिणाम

माइक्रोसॉफ्ट विंडोज 7 अल्टीमेट

4
नए कोड में Get-WmiObject के बजाय Get-CimInstance का उपयोग करने की अनुशंसा की जाती है।
डेर_मिस्टर

2
@Der_Meister यह PSv3 + के लिए केवल सच है
मैक्सिमिलियन बर्स्ज़ले

20

यह आपको उपरोक्त सभी समाधानों के विपरीत विंडोज का पूर्ण संस्करण (संशोधन / बिल्ड नंबर सहित) देगा :

(Get-ItemProperty -Path c:\windows\system32\hal.dll).VersionInfo.FileVersion

परिणाम:

10.0.10240.16392 (th1_st1.150716-1608)

5
यह सबसे अच्छा समाधान है जहाँ तक मेरा संबंध है क्योंकि यह संशोधन संख्या को सही ढंग से बता रहा है। दूसरों में से कोई भी नहीं है (कम से कम जैसा मैंने उन्हें परीक्षण किया है)।
बस्तेहेम

6
यह अब तक का एकमात्र समाधान है जिसने मुझे पूर्ण बिल्ड नंबर प्राप्त करने की अनुमति दी है। हालाँकि , system32 की सभी फाइलें प्रत्येक अपडेट के साथ अपडेट नहीं की जाती हैं - उदाहरण के लिए, मेरा hal.dll अभी भी दिखाता है 10.0.10586.0 (th2_release.151029-1700), जबकि winload.exe है 10.0.10586.63 (th2_release.160104-1513)
मेलका 47

2
यहाँ एक छोटी लिपि है जो उच्चतम निर्माण तिथि के साथ dll / exe से संस्करण प्राप्त करती है: gist
melak47

6
यह Microsoft के कार्यान्वयन के विवरण पर निर्भर करता है, जिसकी कोई गारंटी नहीं है कि वे करना जारी रखेंगे। यह अब काम करता है लेकिन आपको इस पर भरोसा करने से बचना चाहिए अगर आप चाहते हैं कि आपकी स्क्रिप्ट लंबे समय तक काम करे।
निक

1
@ जयकुल, मैं 2 कारणों से सहमत नहीं हूँ। (1) क्योंकि वे "1803"-सदृश संख्याएँ हमेशा उपलब्ध नहीं होती हैं (जैसे Win8 पर), इसलिए वहाँ क्या उपयोग किया जाना चाहिए? (२) कोई तकनीकी कारण नहीं है कि सिर्फ एक सही होना चाहिए version। ओएस का निर्माण (और अद्यतन) भागों, यानी कर्नेल, एचएएल, यूबीआर और सुविधाओं आदि द्वारा किया गया है । तो फिर हमें वास्तव में उन सभी को प्रदर्शित करना चाहिए। उस संबंध में मुझे लगता है BuildLabEx, Kernelऔर HAL(उस क्रम में) अधिक उचित संस्करण देने का सबसे उपयुक्त तरीका होगा । लेकिन जब से आपको पता लग रहा है कि क्या गलत है , तो आपको पोस्ट करना चाहिए कि क्या सही है
not2qubit

18
Get-ComputerInfo | select WindowsProductName, WindowsVersion, OsHardwareAbstractionLayer

रिटर्न

WindowsProductName    WindowsVersion OsHardwareAbstractionLayer
------------------    -------------- --------------------------
Windows 10 Enterprise 1709           10.0.16299.371 

@ सच में नहीं? मेरी सरफेस बुक 2 पर लगभग 1 सेकंड
एरिक हर्लिट्ज

14

पॉवरशेल 5 से:

Get-ComputerInfo
Get-ComputerInfo -Property Windows*

मुझे लगता है कि यह आदेश बहुत अधिक 1001 विभिन्न तरीकों की कोशिश करता है जो अब तक सिस्टम की जानकारी एकत्र करने के लिए खोजा गया है ...


मुझे इस से मिली प्रतिक्रिया का एक हिस्सा अजीब है ... मैं विंडोज 10 1909 पर हूं, लेकिन "विंडोजक्रॉवर्टन" 6.3 है। मुझे लगता है कि 10 होगा, जैसा कि 6.3 विंडोज 8.1 है। अन्यथा, मुझे इस कमांड द्वारा दी गई जानकारी पसंद है
रैंडी

8

यदि आप विंडोज 8.1 (6.3.9600) और विंडोज 8 (6.2.9200) के बीच अंतर करना चाहते हैं

(Get-CimInstance Win32_OperatingSystem).Version 

उचित संस्करण प्राप्त करने के लिए। [Environment]::OSVersionविंडोज 8.1 में ठीक से काम नहीं करता है (यह विंडोज 8 संस्करण लौटाता है)।


ध्यान दें कि विंडोज़ -10[Environment]::OSVersion में काम करता है , 10.OSVersion.Version.Major
yzorg

1
दोनों (Get-CimInstance Win32_OperatingSystem).Versionऔर [Environment]::OSVersionमेरे लिए काम करते हैं और एक ही परिणाम लौटाते हैं: 6.3.9600.0
VirtualVDX

दुर्भाग्य से 6.3.9600 सिर्फ विन 8.1 नहीं है, सर्वर 2012 आर 2 भी इसी बिल्ड नंबर को लौटाता है।
बाइटजुनकी

8

मैं एक एक उत्तर को परिष्कृत कर रहा हूं

मैं winver.exe से आउटपुट से मेल खाने की कोशिश करते हुए इस सवाल पर पहुंचा:

Version 1607 (OS Build 14393.351)

मैं इसके साथ बिल्ड स्ट्रिंग निकालने में सक्षम था:

,((Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name BuildLabEx).BuildLabEx -split '\.') | % {  $_[0..1] -join '.' }  

परिणाम: 14393.351

अपडेट किया गया : यहां रेगेक्स का उपयोग करते हुए थोड़ा सरलीकृत स्क्रिप्ट है

(Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion").BuildLabEx -match '^[0-9]+\.[0-9]+' |  % { $matches.Values }

5

मैंने ऊपर की स्क्रिप्ट ली और उन्हें इसके साथ आने के लिए थोड़ा ट्विक किया:

$name=(Get-WmiObject Win32_OperatingSystem).caption
$bit=(Get-WmiObject Win32_OperatingSystem).OSArchitecture

$vert = " Version:"
$ver=(Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion").ReleaseId

$buildt = " Build:"
$build= (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion").BuildLabEx -match '^[0-9]+\.[0-9]+' |  % { $matches.Values }

$installd = Get-ComputerInfo -Property WindowsInstallDateFromRegistry

Write-host $installd
Write-Host $name, $bit, $vert, $ver, `enter code here`$buildt, $build, $installd

इस तरह से परिणाम प्राप्त करने के लिए:

Microsoft Windows 10 होम 64-बिट संस्करण: 1709 बिल्ड: 16299.431 @ {WindowsInstallDateFromRegistry = 18-01-01 2:29:11 AM}

संकेत: मैं एक हाथ स्थापित पाठ से उपसर्ग पाठ अलग करना चाहूँगा ताकि मैं इसे अधिक पठनीय शीर्ष लेख के साथ बदल सकूँ।


इंस्टॉल करने की कमांड को चलने में [timezone]::CurrentTimeZone.ToLocalTime(([datetime]'1/1/1970')).AddSeconds($(get-itemproperty "HKLM:\Software\Microsoft\Windows NT\CurrentVersion").InstallDate) थोड़ा समय लगता है, इसलिए मुझे तेज पता चला: यह थोड़ा अधिक जटिल है, लेकिन यह बहुत तेज चलता है। तुम भी समय क्षेत्र भाग से बाहर निकलने में सक्षम हो सकता है:([datetime]'1/1/1970').AddSeconds($(get-itemproperty "HKLM:\Software\Microsoft\Windows NT\CurrentVersion").InstallDate)
रैंडी

4

जैसा कि MoonStom कहता है, [Environment]::OSVersionएक उन्नत विंडोज 8.1 पर ठीक से काम नहीं करता है (यह विंडोज 8 संस्करण लौटाता है): लिंक

यदि आप विंडोज 8.1 (6.3.9600) और विंडोज 8 (6.2.9200) के बीच अंतर करना चाहते हैं, तो आप (Get-CimInstance Win32_OperatingSystem).Versionउचित संस्करण प्राप्त करने के लिए उपयोग कर सकते हैं । हालाँकि यह PowerShell 2 में काम नहीं करता है। इसलिए इसका उपयोग करें:

$version = $null
try {
    $version = (Get-CimInstance Win32_OperatingSystem).Version
}
catch {
    $version = [System.Environment]::OSVersion.Version | % {"{0}.{1}.{2}" -f $_.Major,$_.Minor,$_.Build}
}

4

उपयोग:

Get-WmiObject -class win32_operatingsystem -computer computername | Select-Object Caption

इसका उपयोग करके संस्करण संख्या भी प्राप्त कर सकते हैं: Get-WmiObject -class win32_operatingsystem | संस्करण का चयन करें
KERR

आप आउटपुट दिखा कर इस उत्तर को सुधार सकते हैं।
james.garriss

4

यदि आप MS को उनके पैचिंग साइट जैसे https://technet.microsoft.com/en-us/library/security/ms17-010.aspx पर जानकारी डालने का प्रयास कर रहे हैं

आपको एक कॉम्बो की आवश्यकता होगी जैसे:

$name=(Get-WmiObject Win32_OperatingSystem).caption $bit=(Get-WmiObject Win32_OperatingSystem).OSArchitecture $ver=(Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion").ReleaseId Write-Host $name, $bit, $ver

माइक्रोसॉफ्ट विंडोज 10 होम 64-बिट 1703


2

Windows PowerShell 2.0:

$windows = New-Object -Type PSObject |
           Add-Member -MemberType NoteProperty -Name Caption -Value (Get-WmiObject -Class Win32_OperatingSystem).Caption -PassThru |
           Add-Member -MemberType NoteProperty -Name Version -Value [Environment]::OSVersion.Version                     -PassThru

Windows PowerShell 3.0:

$windows = [PSCustomObject]@{
    Caption = (Get-WmiObject -Class Win32_OperatingSystem).Caption
    Version = [Environment]::OSVersion.Version
}

प्रदर्शन के लिए (दोनों संस्करण):

"{0}  ({1})" -f $windows.Caption, $windows.Version 

2

Windows 10 1809 पर PowerShell v5 में winver.exe के समान आउटपुट का उत्पादन करने के लिए:

$Version = Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\'
"Version $($Version.ReleaseId) (OS Build $($Version.CurrentBuildNumber).$($Version.UBR))"

इसके अलावा, यह विंडोज़ 10 में "सेटिंग्स> सिस्टम> अबाउट" संस्करण से मेल खाता है और अपडेट बिल्ड
रिविजन को सही पाता है


1

यह वास्तव में एक लंबा धागा है, और शायद इसलिए कि सही उत्तर मूल प्रश्न को हल नहीं कर रहे हैं। मैं इस साइट पर आया था: संस्करण और बिल्ड नंबर जो कि Microsoft Windows दुनिया में क्या है का एक स्पष्ट अवलोकन प्रदान करता है।

चूँकि मेरी दिलचस्पी यह जानने के लिए है कि मैं कौन सी सटीक विंडोज़ ओएस के साथ काम कर रहा हूँ, इसलिए मैंने पूरे संस्करण इंद्रधनुष को छोड़ दिया और इसके बजाय BuildNumber पर ध्यान केंद्रित किया। बिल्ड नंबर को इसके द्वारा प्राप्त किया जा सकता है:

([Environment]::OSVersion.Version).Build

या द्वारा:

(Get-CimInstance Win32_OperatingSystem).buildNumber

चुनाव आपका है जो कभी भी आप इसे पसंद करते हैं। तो वहाँ से मैं कुछ कर सकता हूँ:

    switch ((Get-CimInstance Win32_OperatingSystem).BuildNumber) 
{
    6001 {$OS = "W2K8"}
    7600 {$OS = "W2K8R2"}
    7601 {$OS = "W2K8R2SP1"}    
    9200 {$OS = "W2K12"}
    9600 {$OS = "W2K12R2"}
    14393 {$OS = "W2K16v1607"}
    16229 {$OS = "W2K16v1709"}
    default { $OS = "Not Listed"}

}
Write-Host "Server system: $OS" -foregroundcolor Green

नोट: जैसा कि आप देख सकते हैं कि मैंने उपर्युक्त का उपयोग केवल सर्वर सिस्टम के लिए किया है, हालाँकि इसे आसानी से वर्कस्टेशन पर लागू किया जा सकता है या चतुराई से दोनों का समर्थन करने के लिए बढ़ाया जा सकता है ... लेकिन मैं इसे आपके पास छोड़ दूँगा।

आनंद लें, और मजा करें!


0

यह आपको पूर्ण और कोरेक्ट (समान संस्करण संख्या जो आपको तब मिलती है जब आप winver.exe चलाते हैं) संस्करण को Windows (संशोधन / बिल्ड नंबर सहित) अन्य सभी समाधानों के विपरीत REMOTELY (Windows 10 पर परीक्षण किया गया):

Function Get-OSVersion {
Param($ComputerName)
    Invoke-Command -ComputerName $ComputerName -ScriptBlock {
        $all = @()
        (Get-Childitem c:\windows\system32) | ? Length | Foreach {

            $all += (Get-ItemProperty -Path $_.FullName).VersionInfo.Productversion
        }
        $version = [System.Environment]::OSVersion.Version
        $osversion = "$($version.major).0.$($version.build)"
        $minor = @()
        $all | ? {$_ -like "$osversion*"} | Foreach {
            $minor += [int]($_ -replace".*\.")
        }
        $minor = $minor | sort | Select -Last 1

        return "$osversion.$minor"
    }
}

मुझे अपनी लोकलहोस्ट पर 'लोकलहोस्ट' के साथ चलने और वास्तविक कंप्यूटर नाम (जैसे 'होस्टनाम' द्वारा लौटाया गया) का उपयोग करने में त्रुटि हुई - क्या इस समाधान को ट्वीक करना संभव है, ताकि सेवाओं को सक्षम किए बिना स्थानीय मशीन से जानकारी प्राप्त की जा सके?
मोनोजोनी

[xxxxxx] दूरस्थ सर्वर से कनेक्ट करना xxxxxx निम्नलिखित त्रुटि संदेश के साथ विफल रहा: क्लाइंट अनुरोध में निर्दिष्ट गंतव्य से कनेक्ट नहीं हो सकता। सत्यापित करें कि गंतव्य पर सेवा चल रही है और अनुरोध स्वीकार कर रही है। गंतव्य पर चल रहे डब्ल्यूएस-प्रबंधन सेवा के लिए लॉग और प्रलेखन से परामर्श करें, सबसे आम तौर पर IIS या WinRM। यदि गंतव्य WinRM सेवा है, तो WinRM सेवा का विश्लेषण और कॉन्फ़िगर करने के लिए गंतव्य पर निम्न कमांड चलाएँ: "winrm quickconfig"। अधिक जानकारी के लिए, [...]
monojohnny

मेरे लिए काम किया। Upvoted। यह एक आदर्श स्क्रिप्ट होगी यदि इसमें विंडोज़ 10 रिलीज़ आईडी - 1507, 1511, 1607 आदि शामिल होंगे
एंटोन क्राउग्लोव

0

सटीक संस्करण का पता लगाने के लिए मैंने बहुत खोज की, क्योंकि WSUS सर्वर गलत संस्करण दिखाता है। सबसे अच्छा यूबीआर रजिस्ट्री कुंजी से संशोधन प्राप्त करना है।

    $WinVer = New-Object TypeName PSObject
$WinVer | Add-Member MemberType NoteProperty Name Major Value $(Get-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion' CurrentMajorVersionNumber).CurrentMajorVersionNumber
$WinVer | Add-Member MemberType NoteProperty Name Minor Value $(Get-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion' CurrentMinorVersionNumber).CurrentMinorVersionNumber
$WinVer | Add-Member MemberType NoteProperty Name Build Value $(Get-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion' CurrentBuild).CurrentBuild
$WinVer | Add-Member MemberType NoteProperty Name Revision Value $(Get-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion' UBR).UBR
$WinVer

0

विंडोज पॉवर्सशेल का उपयोग करना, आपको निम्नलिखित तरीके से आवश्यक डेटा प्राप्त करना संभव है

कैप्शन:

(Get-WmiObject -class Win32_OperatingSystem).Caption

ReleaseId:

(Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name ReleaseId).ReleaseId

संस्करण:

(Get-CimInstance Win32_OperatingSystem).version

0

[हल किया]

#copy all the code below:
#save file as .ps1 run and see the magic

 Get-WmiObject -Class Win32_OperatingSystem | ForEach-Object -MemberName Caption
 (Get-CimInstance Win32_OperatingSystem).version


#-------------comment-------------#
#-----finding windows version-----#

$version= (Get-CimInstance Win32_OperatingSystem).version
$length= $version.Length
$index= $version.IndexOf(".")
[int]$windows= $version.Remove($index,$length-2)  
$windows
#-----------end------------------#
#-----------comment-----------------#

एसओ में आपका स्वागत है! जब आप किसी प्रश्न का उत्तर देते हैं, तो कृपया थोड़ा समझाने की कोशिश करें। इस मामले में, 20 और उत्तर हैं ताकि आप के पेशेवरों को बेनकाब किया जा सके।
डेविड गार्सिया बोदगो

0

आप OSVersion.Version.Major की जाँच करके भी कुछ इस तरह का उपयोग कर सकते हैं:

IF ([System.Environment]::OSVersion.Version.Major -ge 10) {Write-Host "Windows 10 or above"}
IF ([System.Environment]::OSVersion.Version.Major -lt 10) {Write-Host "Windows 8.1 or below"}

-2

आप चीजों को सरल बनाने के लिए (सभी विंडोज संस्करणों और अन्य प्लेटफार्मों पर काम करता है) अजगर का उपयोग कर सकते हैं:

import platform

print(platform.system()) # returns 'Windows', 'Linux' etc.
print(platform.release()) # returns for Windows 10 or Server 2019 '10'

if platform.system() = 'Windows':
    print(platform.win32_ver()) # returns (10, 10.0.17744, SP0, Multiprocessor Free) on windows server 2019

सवाल " PowerShell कमांड लाइन से विंडोज संस्करण कैसे ढूंढें "। यह वास्तव में उस प्रश्न का उत्तर नहीं है और आपको इसे हटाने पर विचार करना चाहिए।
Alain O'Dea

-3
$OSVersion = [Version](Get-ItemProperty -Path "$($Env:Windir)\System32\hal.dll" -ErrorAction SilentlyContinue).VersionInfo.FileVersion.Split()[0]

विंडोज 10 रिटर्न पर: 10.0.10586.420

फिर आप दानेदार तुलना के लिए गुणों तक पहुंचने के लिए चर का उपयोग कर सकते हैं

$OSVersion.Major equals 10
$OSVersion.Minor equals 0
$OSVersion.Build equals 10586
$OSVersion.Revision equals 420

इसके अतिरिक्त, आप निम्न का उपयोग करके ऑपरेटिंग सिस्टम संस्करणों की तुलना कर सकते हैं

If ([Version]$OSVersion -ge [Version]"6.1")
   {
       #Do Something
   }
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.