【Windows管理者必見】tasklistコマンド完全ガイド | プロセス監視から自動化まで徹底解説

Windows

Windowsを使っていて、こんな状況に遭遇したことはありませんか?

  • 「PCが重くなった原因を素早く特定したい」
  • 「特定のアプリが本当に動いているか確認したい」
  • 「システム管理でプロセス情報を定期的に記録したい」
  • 「コマンドラインからプロセス管理を効率化したい」

そんなときに威力を発揮するのが tasklistコマンド です。

tasklistコマンドは、タスクマネージャーのコマンドライン版とも言える強力なツールで、豊富なフィルタリング機能、自動化対応、詳細な出力オプションを備えています。

GUI操作よりも高速で、スクリプト化も容易なため、システム管理者から一般ユーザーまで幅広く活用されています。

この記事では、tasklistコマンドの基本的な使い方から、実務で役立つ高度なテクニック、自動化の方法まで包括的に解説します。

スポンサーリンク

tasklistコマンドとは?

tasklistは、Windowsに標準で搭載されている プロセス情報表示専用のコマンドラインツール です。

主な特徴

  • 高速な情報取得: GUIよりも迅速にプロセス情報を表示
  • 豊富なフィルタリング: 条件指定による柔軟な情報抽出
  • 多様な出力形式: テーブル、CSV、リスト形式での出力
  • 自動化対応: バッチファイルやスクリプトでの活用が容易
  • リモート対応: ネットワーク経由でのプロセス確認も可能

タスクマネージャーとの比較

項目tasklistコマンドタスクマネージャー
起動速度瞬時GUI読み込みに時間がかかる場合がある
フィルタリング柔軟な条件指定基本的なソート機能のみ
自動化スクリプト化可能手動操作のみ
出力保存多様な形式で保存可能スクリーンショットのみ
リモート接続対応リモートデスクトップ経由のみ

基本的な使い方

最もシンプルな実行

tasklist

このコマンドで、現在実行中のすべてのプロセスが表示されます。

表示される基本情報

列名説明
Image Name実行ファイル名chrome.exe
PIDプロセスID1234
Session Nameセッション名Console
Session#セッション番号1
Mem Usageメモリ使用量150,264 K

表示例

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
System Idle Process              0 Services                   0          8 K
System                           4 Services                   0        236 K
smss.exe                       416 Services                   0      1,036 K
csrss.exe                      508 Services                   0      4,512 K

主要オプションの詳細解説

フィルタリング(/FI)- 最も重要な機能

基本構文:

tasklist /FI "条件"

利用可能なフィルター条件

フィルター名演算子説明使用例
IMAGENAMEeq, ne実行ファイル名"IMAGENAME eq chrome.exe"
PIDeq, ne, gt, lt, ge, leプロセスID"PID gt 1000"
SESSIONNAMEeq, neセッション名"SESSIONNAME eq Console"
STATUSeq, neプロセス状態"STATUS eq RUNNING"
MEMUSAGEeq, ne, gt, lt, ge, leメモリ使用量(KB)"MEMUSAGE gt 100000"
CPUTIMEeq, ne, gt, lt, ge, leCPU時間"CPUTIME gt 00:01:00"
WINDOWTITLEeq, neウィンドウタイトル"WINDOWTITLE eq Notepad"

実践的なフィルター例

特定のアプリケーションを検索:

tasklist /FI "IMAGENAME eq chrome.exe"

メモリを大量に使用しているプロセス:

tasklist /FI "MEMUSAGE gt 500000"

応答していないプロセス:

tasklist /FI "STATUS eq NOT RESPONDING"

複数条件の組み合わせ:

tasklist /FI "IMAGENAME eq java.exe" /FI "MEMUSAGE gt 100000"

サービス情報表示(/SVC)

tasklist /SVC

各プロセスが使用しているWindowsサービスを表示します。

出力例:

Image Name                     PID Services
========================= ======== ============================================
svchost.exe                    832 AudioEndpointBuilder, AudioSrv, Audiosrv
svchost.exe                    936 BITS, EventSystem, netprofm, PcaSvc

詳細情報表示(/V)

tasklist /V

ウィンドウタイトル、CPU時間、ユーザー名などの詳細情報を表示します。

出力形式の変更(/FO)

CSV形式:

tasklist /FO CSV

リスト形式:

tasklist /FO LIST

テーブル形式(デフォルト):

tasklist /FO TABLE

DLL情報表示(/M)

すべてのDLLを表示:

tasklist /M

特定のDLLを使用するプロセス:

tasklist /M ntdll.dll

実践的な活用例

CPU使用率の高いプロセス特定

tasklist /V /FO TABLE | findstr /V "0:00:00"

メモリリークの疑いがあるプロセス

tasklist /FI "MEMUSAGE gt 1000000" /FO CSV

特定のアプリケーションの動作確認

tasklist /FI "IMAGENAME eq yourapp.exe" /V

ログ記録と監査

定期的なプロセス情報の記録

@echo off
set LOGFILE=C:\logs\tasklist_%DATE:~0,4%-%DATE:~5,2%-%DATE:~8,2%_%TIME:~0,2%-%TIME:~3,2%-%TIME:~6,2%.csv
tasklist /FO CSV > "%LOGFILE%"
echo プロセス情報を %LOGFILE% に記録しました

システム負荷の監視

@echo off
echo %DATE% %TIME% - システム監視開始 >> system_monitor.log
tasklist /FI "MEMUSAGE gt 500000" /FO CSV >> high_memory_processes.csv
tasklist /FI "STATUS eq NOT RESPONDING" >> unresponsive_processes.log

自動化スクリプト

プロセス監視と自動対応

@echo off
REM 特定のプロセスが実行中かチェック
tasklist /FI "IMAGENAME eq critical_app.exe" 2>NUL | find /I "critical_app.exe" >NUL
if "%ERRORLEVEL%"=="0" (
    echo Critical app is running
) else (
    echo Critical app is NOT running - attempting restart
    start "Critical App" "C:\Program Files\CriticalApp\critical_app.exe"
)

リソース監視とアラート

@echo off
setlocal enabledelayedexpansion

REM メモリ使用量が1GB以上のプロセスを検出
for /f "tokens=1,5" %%A in ('tasklist /FO CSV ^| findstr /V "Image Name"') do (
    set "mem=%%B"
    set "mem=!mem:,=!"
    set "mem=!mem: K=!"
    if !mem! GTR 1000000 (
        echo 警告: %%A がメモリを大量使用しています (!mem! KB^)
        echo %DATE% %TIME% - %%A - !mem! KB >> high_memory_alert.log
    )
)

PowerShellとの連携

PowerShellでのtasklist活用

# tasklistの結果をPowerShellオブジェクトとして処理
$processes = tasklist /FO CSV | ConvertFrom-Csv

# メモリ使用量でソート
$processes | Sort-Object {[int]($_.Mem_Usage -replace '[^\d]','')} -Descending | Select-Object -First 10

# 特定の条件でフィルタリング
$processes | Where-Object {$_.Image_Name -like "*chrome*"}

Get-Processとの比較活用

# tasklistとGet-Processの情報を組み合わせ
$tasklistData = tasklist /FO CSV | ConvertFrom-Csv
$psData = Get-Process

# 両方の情報をマージして詳細分析
foreach ($proc in $psData) {
    $taskInfo = $tasklistData | Where-Object {$_.PID -eq $proc.Id}
    if ($taskInfo) {
        Write-Host "$($proc.Name) - CPU: $($proc.CPU) - Memory: $($taskInfo.Mem_Usage)"
    }
}

高度なテクニック

リモートシステムの監視

tasklist /S リモートコンピュータ名 /U ユーザー名 /P パスワード

例:

tasklist /S SERVER01 /U administrator /P password123 /FO CSV

複数条件での複雑なフィルタリング

REM AND条件(複数の/FIを指定)
tasklist /FI "IMAGENAME eq svchost.exe" /FI "MEMUSAGE gt 50000"

REM OR条件(複数回実行して結果をマージ)
(tasklist /FI "IMAGENAME eq chrome.exe" & tasklist /FI "IMAGENAME eq firefox.exe") > browsers.txt

定期実行とログローテーション

@echo off
REM ログローテーション付きの定期監視
set LOGDIR=C:\ProcessLogs
set MAXLOGS=30

REM 古いログファイルを削除
forfiles /P "%LOGDIR%" /S /M *.csv /D -%MAXLOGS% /C "cmd /c del @path" 2>nul

REM 現在のプロセス情報を記録
set LOGFILE=%LOGDIR%\processes_%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%_%TIME:~0,2%%TIME:~3,2%.csv
tasklist /FO CSV > "%LOGFILE%"

トラブルシューティング(よくあるエラーと対処法)

エラー1: “アクセスが拒否されました”

原因: 他のユーザーのプロセスや特権プロセスへのアクセス試行

解決法:

REM 管理者権限でコマンドプロンプトを実行
runas /user:Administrator cmd

エラー2: “指定されたコンピューターが見つかりません”

原因: リモート接続時のネットワークエラーまたは認証問題

解決法:

  1. ネットワーク接続の確認
  2. 認証情報の再確認
  3. WMIサービスの状態確認
REM WMIサービスの状態確認
sc query winmgmt

エラー3: 結果が表示されない

原因: フィルター条件が厳しすぎる、または構文エラー

解決法:

REM 段階的にフィルターを確認
tasklist | findstr "アプリ名"
tasklist /FI "IMAGENAME eq アプリ名*"

パフォーマンスの最適化

大量のプロセスがある環境での効率化

REM 特定の情報のみを抽出してパフォーマンス向上
tasklist /FI "SESSIONNAME eq Console" /FO CSV | findstr /V "Image Name"

ネットワーク経由での監視最適化

REM 必要最小限の情報のみを取得
tasklist /S リモートPC /FI "MEMUSAGE gt 100000" /FO LIST

まとめ

tasklistコマンドは、Windowsでのプロセス管理において非常に強力で柔軟なツールです。

覚えておきたい基本コマンド

# 基本的なプロセス一覧
tasklist

# メモリ使用量でフィルタリング
tasklist /FI "MEMUSAGE gt 100000"

# CSV形式で出力
tasklist /FO CSV

# 詳細情報付きで表示
tasklist /V

# 特定アプリの監視
tasklist /FI "IMAGENAME eq chrome.exe"

コメント

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