この記事について
この記事は、生成AIを活用した自動生成フローで作成しています。CIMセッションとPowerShell 7並列処理の基本仕様を確認し、旧記事の未検証な性能値や複雑なログ取得例を整理しました。検証ステータス:✅ PowerShell/CIMの基本構造確認済み
複数のWindows端末からOSやディスク容量などを取得する場合、New-CimSessionで接続を作り、同じセッションを複数回のGet-CimInstanceで再利用できます。大量実行では、接続失敗を1台単位で記録し、最後にセッションを確実に破棄することが重要です。
基本の流れ
- 対象PC名を読み込む。
New-CimSessionで接続する。Get-CimInstanceで必要な情報だけ取得する。- 成功・失敗・取得時刻を構造化して保存する。
Remove-CimSessionで接続を閉じる。
最小コード
$session = $null
try {
$session = New-CimSession -ComputerName $ComputerName -ErrorAction Stop
$os = Get-CimInstance -CimSession $session -ClassName Win32_OperatingSystem -ErrorAction Stop
[pscustomobject]@{
ComputerName = $ComputerName
Status = 'Success'
OS = $os.Caption
CheckedAt = Get-Date
}
}
catch {
[pscustomobject]@{
ComputerName = $ComputerName
Status = 'Failed'
Error = $_.Exception.Message
CheckedAt = Get-Date
}
}
finally {
if ($session) { Remove-CimSession $session }
}
イベントログは別工程にする
OS情報取得とイベントログ集計を一つの巨大な処理へまとめると、どこで失敗したか分かりにくくなります。まずCIMによる端末情報取得を安定させ、イベントログが必要なら別工程として切り出すと保守しやすくなります。
並列化は小さく始める
ForEach-Object -ParallelはPowerShell 7以降です。並列度を大きくしすぎると実行端末やネットワークへ負荷が集中します。小さなThrottleLimitから始め、所要時間と失敗率を測って調整します。
公式情報
この記事の更新履歴
- 2026-09-14 追加:セッションをfinallyで閉じる最小テンプレートを追加。
- 2026-09-14 変更:OS情報取得とログ集計を分離する構成へ変更。
- 2026-09-14 削除:内部執筆指示、本文H1、未検証の性能値、複雑なログクエリを削除。
