Windowsを使っていて、こんな状況に遭遇したことはありませんか?
- 「PCが重くなった原因を素早く特定したい」
- 「特定のアプリが本当に動いているか確認したい」
- 「システム管理でプロセス情報を定期的に記録したい」
- 「コマンドラインからプロセス管理を効率化したい」
そんなときに威力を発揮するのが tasklistコマンド です。
tasklistコマンドは、タスクマネージャーのコマンドライン版とも言える強力なツールで、豊富なフィルタリング機能、自動化対応、詳細な出力オプションを備えています。
GUI操作よりも高速で、スクリプト化も容易なため、システム管理者から一般ユーザーまで幅広く活用されています。
この記事では、tasklistコマンドの基本的な使い方から、実務で役立つ高度なテクニック、自動化の方法まで包括的に解説します。
tasklistコマンドとは?

tasklistは、Windowsに標準で搭載されている プロセス情報表示専用のコマンドラインツール です。
主な特徴
- 高速な情報取得: GUIよりも迅速にプロセス情報を表示
- 豊富なフィルタリング: 条件指定による柔軟な情報抽出
- 多様な出力形式: テーブル、CSV、リスト形式での出力
- 自動化対応: バッチファイルやスクリプトでの活用が容易
- リモート対応: ネットワーク経由でのプロセス確認も可能
タスクマネージャーとの比較
項目 | tasklistコマンド | タスクマネージャー |
---|---|---|
起動速度 | 瞬時 | GUI読み込みに時間がかかる場合がある |
フィルタリング | 柔軟な条件指定 | 基本的なソート機能のみ |
自動化 | スクリプト化可能 | 手動操作のみ |
出力保存 | 多様な形式で保存可能 | スクリーンショットのみ |
リモート接続 | 対応 | リモートデスクトップ経由のみ |
基本的な使い方

最もシンプルな実行
tasklist
このコマンドで、現在実行中のすべてのプロセスが表示されます。
表示される基本情報
列名 | 説明 | 例 |
---|---|---|
Image Name | 実行ファイル名 | chrome.exe |
PID | プロセスID | 1234 |
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 "条件"
利用可能なフィルター条件
フィルター名 | 演算子 | 説明 | 使用例 |
---|---|---|---|
IMAGENAME | eq, ne | 実行ファイル名 | "IMAGENAME eq chrome.exe" |
PID | eq, ne, gt, lt, ge, le | プロセスID | "PID gt 1000" |
SESSIONNAME | eq, ne | セッション名 | "SESSIONNAME eq Console" |
STATUS | eq, ne | プロセス状態 | "STATUS eq RUNNING" |
MEMUSAGE | eq, ne, gt, lt, ge, le | メモリ使用量(KB) | "MEMUSAGE gt 100000" |
CPUTIME | eq, ne, gt, lt, ge, le | CPU時間 | "CPUTIME gt 00:01:00" |
WINDOWTITLE | eq, 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: “指定されたコンピューターが見つかりません”
原因: リモート接続時のネットワークエラーまたは認証問題
解決法:
- ネットワーク接続の確認
- 認証情報の再確認
- 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"
コメント