使用しているWindowsバージョンを確認するにはどうすればよいですか?
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
どうすればいいですか?
.NETライブラリにアクセスできるため、この情報を取得するには、 OSVersion
System.Environment
クラスのプロパティにアクセスできます。バージョン番号には、Version
プロパティがあります。
例えば、
PS C:\> [System.Environment]::OSVersion.Version
Major Minor Build Revision
----- ----- ----- --------
6 1 7601 65536
Windowsバージョンの詳細は here にあります。
Jeffが answer で述べているように、Windowsのバージョン番号を取得するには、次を使用します。
[Environment]::OSVersion
結果が [System.Version]
タイプであることに注意する価値があります。したがって、たとえばWindows
[Environment]::OSVersion.Version -ge (new-object 'Version' 6,1)
ただし、これがクライアントWindowsかサーバーWindowsか、バージョンの名前かはわかりません。
たとえば、WMIの Win32_OperatingSystem
クラス(常に単一インスタンス)を使用します。
(Get-WmiObject -class Win32_OperatingSystem).Caption
のようなものを返します
Microsoft®WindowsServer®2008標準
残念ながら、他の回答のほとんどは、Windows 10固有の情報を提供していません。
Windows 10には versions があります: 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
スーパーユーザーに関する関連質問 も参照してください。
他のWindowsバージョンの場合はsysteminfo
を使用します。 Powershellラッパー:
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]:...
同じコマンドのWindows 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
Get-WmiObject -Class Win32_OperatingSystem | ForEach-Object -MemberName Caption
またはゴルフ
gwmi win32_operatingsystem | % caption
結果
Microsoft Windows 7 Ultimate
これにより、上記のすべてのソリューションとは異なり、Windowsのフルバージョン(リビジョン/ビルド番号を含む)が得られます。
(Get-ItemProperty -Path c:\windows\system32\hal.dll).VersionInfo.FileVersion
結果:
10.0.10240.16392 (th1_st1.150716-1608)
PowerShell 5以降:
Get-ComputerInfo
Get-ComputerInfo -Property Windows*
このコマンドは、システム情報を収集するためにこれまでに発見された1001種類の方法をほとんど試みていると思います...
Windows 8.1(6.3.9600)とWindows 8(6.2.9200)を区別したい場合
(Get-CimInstance Win32_OperatingSystem).Version
適切なバージョンを取得します。 [Environment]::OSVersion
は、Windows 8.1では正常に動作しません(Windows 8バージョンを返します)。
answers のいずれかを改良しています
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
Updated:これは、正規表現を使用したわずかに簡略化されたスクリプトです
(Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion").BuildLabEx -match '^[0-9]+\.[0-9]+' | % { $matches.Values }
PS C:\> Get-ComputerInfo | select WindowsProductName, WindowsVersion, OsHardwareAbstractionLayer
返す
WindowsProductName WindowsVersion OsHardwareAbstractionLayer
------------------ -------------- --------------------------
Windows 10 Enterprise 1709 10.0.16299.371
つかいます:
Get-WmiObject -class win32_operatingsystem -computer computername | Select-Object Caption
MoonStomが言うように、[Environment]::OSVersion
はアップグレードされたWindows 8.1(Windows properly8バージョンを返します)では正しく動作しません: link 。
Windows 8.1(6.3.9600)とWindows 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}
}
上記のスクリプトを使用して、少し調整してこれを考え出しました。
$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 Home 64-bitバージョン:1709ビルド:16299.431 @ {WindowsInstallDateFromRegistry = 18-01-01 2:29:11 AM}
ヒント:インストール日からプレフィックステキストを削除して、読みやすいヘッダーに置き換えることができれば幸いです。
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
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
Microsoft Windows 10 Home 64-ビット1703
(Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name BuildLabEx).BuildLabEx
これにより、他のすべてのソリューション(Windows unlike10でテスト済み)とは異なり、完全かつ正しい(winver.exeを実行したときと同じバージョン番号)バージョンのWindows(リビジョン/ビルド番号を含む)が完全に提供されます。
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"
}
}
WSUSサーバーに間違ったバージョンが表示されるため、正確なバージョンを見つけるためによく検索しました。最善の方法は、UBRレジストリキーからリビジョンを取得することです。
$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
物事を簡素化するために、Pythonを使用できます(すべてのWindowsバージョンおよび他のすべてのプラットフォームで動作します)。
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
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))"
Windows Powershellを使用すると、次の方法で必要なデータを取得できます
キャプション:
(Get-WmiObject -class Win32_OperatingSystem).Caption
ReleaseId:
(Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name ReleaseId).ReleaseId
バージョン:
(Get-CimInstance Win32_OperatingSystem).version