最近、Powershellを使う機会がよくあるので、忘れないようにメモしておきたいと思います。
今使っているWindows10のビルド情報を確認するには、コマンドプロンプトや「ここに入力して検索」にwinverと入力すると別ウインドウでバージョン情報とビルド情報を見ることができますが、これをPowershellで確認するには
Get-WmiObject Win32_OperatingSystem
と入力して実行すれば表示されます。しかし、ビルド情報以外の情報も表示されてしまうので、必要な情報だけを取り出して表示させたいと思います。それがこんな感じ。
$wininfo = Get-WmiObject Win32_OperatingSystem -ComputerName 127.0.0.1
$infobox = New-Object Object
$infobox | Add-Member Noteproperty ComputerName -value $wininfo.PSComputerName
$infobox | Add-Member Noteproperty IPAddr -value 127.0.0.1
$infobox | Add-Member Noteproperty Caption -value $wininfo.Caption
$infobox | Add-Member Noteproperty BuildNumber -value $wininfo.BuildNumber
Write-Output $infobox
アイキャッチの画像が上のコードを実行した結果なのですが、コンピュータ名(ホスト名)は削ってあり、表示の内容はコンピュータ名(ホスト名)、IPアドレス、Windowsの種類、ビルド情報です。ビルド情報を収集することで、最新のアップデートがあたっているか確認します。Win32_OperatingSystemの後に-ComputerNameとつけて、そのあとにIPアドレスやホスト名を入力して実行するとリモートで操作可能です。
なので、例えば同じセグメント内で起動しているパソコンのビルド情報を取得することも可能で、その場合はforeachを使います。それがこんな感じ。
$ErrorActionPreference = "silentlycontinue"
$array01 = @(1..255)
foreach($a01 in $array01){
$wininfo = Get-WmiObject Win32_OperatingSystem -ComputerName 192.168.0.$a01
$infobox = New-Object Object
$infobox | Add-Member Noteproperty ComputerName -value $wininfo.PSComputerName
$infobox | Add-Member Noteproperty IPAddr -value 192.168.0.$a01
$infobox | Add-Member Noteproperty Caption -value $wininfo.Caption
$infobox | Add-Member Noteproperty BuildNumber -value $wininfo.BuildNumber
$infobox | Export-csv -NoTypeInformation -Append 保存場所のパス\CSVのファイル名
}
1行目はエラーになってもメッセージを表示させないためのもので、array01の配列の中に1~255の数字を入力します。最後にExport-csvを使って結果をCSVに出力すれば情報管理も可能です。