適材適所

WindowsやPowerShellやネットワーク、IBMなどのシステム系の話など気になったことも載せているブログです。

【PowerShell】リモートでWindowsのバージョンを確認する

Windows Updateがしっかりあたっているか、

管理者がリモートでちゃちゃっと確認したいときなどに使えるかもしれません。

※ドメイン環境を想定しています。

検証環境

PC

Windows10 21H1

PowerShell

$PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.1.19041.1645
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.19041.1645
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

Buildnumberとバージョンについて

以下では、Buildnumberを得る方法を書いています。

WindowsのバージョンとBuildnumberは1対1の関係になっているので、ググってもらえますようお願いします。

WMIを使う

WMI(Windows Management Instrumentation)を使用する例。

 
(wmic /node: "コンピュータ名" /user:"ユーザー名" /password:"パスワード" os get buildnumber)[2]

構文が独特。

また、戻り値が「Buildnumber」という文字列+改行+Buildnumber なので要素の3つ目を取得しています。

Get-WmiObjectコマンドレットを使う

WMI Query Language (WQL)を使うバージョンです。

 
$cr=Get-Crdential
(Get-WmiObject -Credential ($cr) -ComputerName コンピュータ名  -Query "Select buildnumber from Win32_operatingsystem").BuildNumber

WQLが少しわかりにくいので、WMI クラスを全部持ってきて、BuildNumberを取得することもできます。

 
$cr=Get-Crdential
(Get-WmiObject -ComputerName コンピュータ名 -Credential $cr -Class Win32_OperatingSystem).BuildNumber

WQLはSQLのサブセットなのでSQLがわかればこっちの方が直感的。

注意

どちらにも言えることですが、セキュリティ環境によってはブロックされる可能性もあります。

また、環境にもよるかも知れませんが、ここで書いてあるユーザーは管理者権限を持つ管理者です。

余談

リモートではなく、自分のPCのバージョンを調べたいときは、次のようにします。

WMIを使う。

 
(wmic os get buildnumber)[2]

Get-WmiObjectを使う1

 
(Get-WmiObject -Query "Select buildnumber from Win32_operatingsystem").BuildNumber

Get-WmiObjectを使う2

 
(Get-WmiObject -Class Win32_OperatingSystem).BuildNumber

最も、自分のWindowsのバージョンを調べたいなら、winverで事足りてしまいますが・・・。

参考

Windows Management Instrumentation (Windows Management Instrumentation) - Win32 apps | Microsoft Learn

WQL について - PowerShell | Microsoft Learn