適材適所

PowerShellを中心にプログラミングやシステム管理の備忘録的なブログ

【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 Docs

WQL について - PowerShell | Microsoft Docs