CIMセッションで複数Windows端末を確認する ― 接続・収集・後片付けを分ける

PowerShellカテゴリを表すパンダのイラスト PowerShell

この記事について
この記事は、生成AIを活用した自動生成フローで作成しています。CIMセッションとPowerShell 7並列処理の基本仕様を確認し、旧記事の未検証な性能値や複雑なログ取得例を整理しました。

検証ステータス:✅ PowerShell/CIMの基本構造確認済み

複数のWindows端末からOSやディスク容量などを取得する場合、New-CimSessionで接続を作り、同じセッションを複数回のGet-CimInstanceで再利用できます。大量実行では、接続失敗を1台単位で記録し、最後にセッションを確実に破棄することが重要です。

基本の流れ

  1. 対象PC名を読み込む。
  2. New-CimSessionで接続する。
  3. Get-CimInstanceで必要な情報だけ取得する。
  4. 成功・失敗・取得時刻を構造化して保存する。
  5. 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、未検証の性能値、複雑なログクエリを削除。

文書情報

記事タイトル
CIMセッションで複数Windows端末を確認する ― 接続・収集・後片付けを分ける
作成日
更新日
Source URL
https://papanda925.com/?p=5757

ライセンス: 本記事のうち、当サイトが権利を有する本文・自作図表は、特記なき限り CC BY 4.0 で利用できます。生成AIを活用して作成・編集した内容を含みます。コードについて、別途ライセンス表示またはリンク先GitHubリポジトリのライセンスがある場合は、その条件を優先します。引用・第三者資料・画像・商標等は本ライセンスの対象外です。 利用ポリシー

タイトルとURLをコピーしました