はじめに
Windowsサーバやクライアントの詳細なバージョン情報を遠隔から取得する方法を解説します。WinRMとPowerShellを活用して、システム情報を安全に収集する手順を説明します。
事前準備
サーバ側の設定
- ネットワークプロファイルの確認と変更
# ネットワークプロファイルの確認
Get-NetConnectionProfile
# プロファイルを変更(必要に応じて)
Set-NetConnectionProfile -Name "ネットワーク名" -NetworkCategory Private
- PowerShellリモート処理の有効化
# PowerShellリモート処理を有効化
Enable-PSRemoting -Force
- リモート管理ユーザーの追加
# ドメインユーザーの場合
Add-LocalGroupMember -Group "Remote Management Users" -Member "DOMAIN\ユーザー名"
# ローカルユーザーの場合
Add-LocalGroupMember -Group "Remote Management Users" -Member "ローカルユーザー名"
クライアント側の設定
- WinRMサービスの起動
# WinRMサービスの起動
Start-Service WinRM
# WinRM構成の確認
winrm quickconfig
- 信頼されたホストの設定
# リモートサーバをTrustedHostsに追加
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "サーバのIPアドレス" -Force
詳細バージョン情報の取得スクリプト
クライアントで実行
# クレデンシャルの作成
$credential = Get-Credential
# リモートコマンド実行
Invoke-Command -ComputerName "サーバのIPアドレス" -Credential $credential -ScriptBlock {
# Windowsバージョン情報の取得
$osInfo = Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion"
# インストール済みの更新プログラム情報
$updateInfo = Get-HotFix | Sort-Object InstalledOn -Descending | Select-Object -First 5
# 結果をカスタムオブジェクトとして返す
[PSCustomObject]@{
# OSバージョン情報
ProductName = $osInfo.ProductName
CurrentVersion = $osInfo.CurrentVersion
ReleaseId = $osInfo.ReleaseId
CurrentBuild = $osInfo.CurrentBuild
UBR = $osInfo.UBR
# 追加のバージョン詳細
BuildLabEx = $osInfo.BuildLabEx
InstallationType = $osInfo.InstallationType
# 最近インストールされた更新プログラム
RecentUpdates = $updateInfo | ForEach-Object {
[PSCustomObject]@{
HotFixID = $_.HotFixID
Description = $_.Description
InstalledOn = $_.InstalledOn
}
}
# システム全体の更新状況
LastInstalledUpdate = (Get-HotFix | Sort-Object InstalledOn -Descending | Select-Object -First 1).InstalledOn
TotalInstalledUpdates = (Get-HotFix).Count
}
}
出力される情報の詳細
取得できる主な情報:
- 製品名 (ProductName)
- 現在のバージョン (CurrentVersion)
- リリースID (ReleaseId)
- 現在のビルド番号 (CurrentBuild)
- UBR (Update Build Revision)
- BuildLabEx (拡張ビルド情報)
- インストールタイプ
- 最近インストールされた更新プログラム (5件)
- 最後に更新された日付
- 総インストール済み更新プログラム数
セキュリティと注意点
- 最小権限の原則に従う
- 安全な認証方法を使用
- ネットワークセキュリティに注意
- 定期的にシステムを最新の状態に保つ
トラブルシューティング
一般的な接続エラー
- 「FullyQualifiedErrorId : CreateRemoteRunspaceFailed」
- 原因: ユーザーが「Remote Management Users」グループに追加されていない
- 解決策: サーバ側でユーザーをグループに追加する
- 接続エラー
- ファイアウォールの確認
- ネットワーク設定の見直し
- WinRMサービスの状態確認
おわりに
WinRMとPowerShellを使用することで、遠隔から詳細なWindows系システム情報を安全かつ効率的に収集できます。環境に応じて適宜スクリプトをカスタマイズしてください。
注意: 実際の環境に合わせて適切に調整し、セキュリティに十分注意してください。
コメント