web-dev-qa-db-ja.com

WMIでPowershellを介してOSバージョンを取得する方法?

誰かがこのようなOSバージョンを取得する方法を知っていますか?

OSバージョン:1607

Get-WmiObjectを使用して?このInformatinがまったく見つかりませんでした。

6
j.walt

次のように元の質問に対する単純な答えではありません:

Get-ComputerInfo | select windowsversion

WindowsVersion--------------1903

2
Soroosh

OSバージョンはレジストリキーに保存されます:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ReleaseId。通常、これらのキーはWMIを使用して読み取ることができます。

LotPings はコメントに正しいクエリを提供しています:(Get-Item "HKLM:SOFTWARE\Microsoft\Windows NT\CurrentVersion").GetValue('ReleaseID')

2
marijnr

それはWMIを介したものではありませんが、 Jeff Mercadoanswerはいずれにせよ役立つかもしれません。

.NETライブラリにアクセスできるため、 OSVersion プロパティにアクセスできます System.Environment この情報を取得するためのクラス。バージョン番号には、Versionプロパティがあります。

例えば、

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

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

Windowsバージョンの詳細については、 ここ を参照してください。

1
Tim

Get-WmiObjectは、ビルドバージョンとNumberを

(Get-WmiObject Win32_OperatingSystem).Version

または

(Get-WmiObject Win32_OperatingSystem).BuildNumber

OSのみに関するより一般的な情報が必要な場合は、Get-Itemコマンドレットを使用して、上記の「relaseID」キーではなく「ProductName」キーを検索することをお勧めします。

(Get-Item "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion").GetValue('ProductName')

すばらしいのは、これらのコマンドがWindows 7からWindows 10まで、Server 2012から2019まで機能することです。ワークステーションに関する情報を取得したり、ハイブリッド環境でワークステーションにタスクを適用したりする必要がある場合に役立ちます。

0
Andy McRae

Get-WmiObjectを使用していませんが、これを確認してください。

Get-ComputerInfo | Select-Object @ {Name = 'Operating System'; Expression = {$。OsName}}、@ {Name = 'Version'; Expression = {$.WindowsVersion}}、@ {Name = 'Build'; Expression = {$。OsBuildNumber}}、@ {Name = 'Architecture'; Expression = {$。OsArchitecture}}、@ {Name = 'System Root'; Expression = {$。WindowsSystemRoot}}、@ {Name = 'Language'; Expression = {$。OsLanguage}}、@ {Name = 'Boot State'; Expression = {$ _。CsBootupState}} |フォーマットテーブル

または

Get-ItemProperty 'HKLM:SOFTWARE\Microsoft\Windows NT\CurrentVersion' | Select-Object ProductName、ReleaseID、CurrentBuild、SystemRoot

または

単に私のプログラムを取り、それで実行します。私は既に新しいバージョンに取り組んでいますが、新しいバージョンはPowerShellを多く使用し、WMICコマンドを大幅に少なくするため、すぐにリリースされることを期待しています。

https://sourceforge.net/projects/signature-by-mafii/files/

0
Mike

TechNet Gallaryでこのクールなスクリプトを見つけました: Get-WindowsVersion

これがどのように見えるかです:

[19JUN] :>Get-WindowsVersion -ComputerName ktpc

ComputerName Productname           WindowsVersion WindowsBuild   ProductID               InstallTime
------------ -----------           -------------- ------------   ---------               -----------
KTPC         Windows 10 Enterprise 1803           10.0.17134.112 00329-10280-00000-AA451 5/22/2018 8:10:15 AM

他の人がこの値を取得するために提案したのと同じ「RealseID」を利用します。しかし、それは素晴らしい努力であり、すぐに使用できます。

0
Ketanbhut

これは、コンピュータ情報を見つけるために私が書いた小さなスクリプトです。

Powershell:コンピューター情報を取得する

$Computer = "localhost"
$Manufacturer = Get-WmiObject -ComputerName $Computer -class win32_computersystem | select -ExpandProperty Manufacturer
$Model = Get-WmiObject -class win32_computersystem -ComputerName $Computer | select -ExpandProperty model
$Serial = Get-WmiObject -class win32_bios -ComputerName $Computer | select -ExpandProperty SerialNumber
$wmi_os = Get-WmiObject -class Win32_OperatingSystem -ComputerName $Computer | select CSName,Caption,Version,OSArchitecture,LastBootUptime
switch($wmi_os.Version){
'10.0.10240'{$wmi_build="1507"}
'10.0.10586'{$wmi_build="1511"}
'10.0.14393'{$wmi_build="1607"}
'10.0.15063'{$wmi_build="1703"}
'10.0.16299'{$wmi_build="1709"}
'10.0.17134'{$wmi_build="1803"}
'10.0.17686'{$wmi_build="1809"}
}
$wmi_cpu = Get-WmiObject -class Win32_Processor -ComputerName $Computer | select -ExpandProperty DataWidth
$wmi_memory = Get-WmiObject -class cim_physicalmemory -ComputerName $Computer | select Capacity | %{($_.Capacity / 1024kb)}
$DNName = Get-ADComputer -Filter "Name -like '$Computer'" | select -ExpandProperty DistinguishedName
$Boot=[System.DateTime]::ParseExact($($wmi_os.LastBootUpTime).Split(".")[0],'yyyyMMddHHmmss',$null)
[TimeSpan]$uptime = New-TimeSpan $Boot $(get-date)
Write-Host "------Computer Info for $Computer------------------`r"
Write-Host "Hostname from WMI`: $($wmi_os.CSName)"
Write-Host "$DNName"
Write-Host "$Manufacturer $Model SN`:$Serial"
Write-Host "$($wmi_os.Caption) $wmi_build $($wmi_os.OSArchitecture) $($wmi_os.Version)"
Write-Host "CPU Architecture: $wmi_cpu"
Write-Host "Memory: $wmi_memory"
Write-Host "Uptime`: $($uptime.days) Days $($uptime.hours) Hours $($uptime.minutes) Minutes $($uptime.seconds) Seconds"
Write-Host "--------------------------------------------------------"
0
Hyperlite1215