パソコンで作業をしていて、「いまどんなドライブがつながっているかな?」「USBメモリはちゃんと認識されているかな?」と思ったことはありませんか?
普通はエクスプローラー(フォルダを開くアプリ)で確認しますが、実はコマンドプロンプトという文字だけの画面でも、簡単にドライブの一覧を見ることができます。
この方法を覚えると、バッチファイル(自動処理のプログラム)を作ったり、システム管理の作業がとても楽になります。
この記事でわかること
- コマンドプロンプトでドライブ一覧を表示する方法
- 複数のコマンドの違いと使い分け
- 実際のシステム管理での活用例
- バッチファイルでの自動処理方法
こんな人におすすめ
- ITの仕事をしている人
- プログラミングを学んでいる人
- パソコンの管理を効率化したい人
- バッチファイルを作りたい人
コマンドプロンプトってなに?ドライブってなに?

コマンドプロンプトとは
コマンドプロンプトとは、文字だけでパソコンを操作する黒い画面のことです。
マウスでクリックする代わりに、キーボードで命令(コマンド)を入力してパソコンを操作します。
コマンドプロンプトを開く方法:
- スタートメニューで「cmd」と入力
- 「コマンドプロンプト」をクリック
- 黒い画面が表示される
または:
Windows + R
キーを押す- 「cmd」と入力してEnter
ドライブとは
ドライブとは、パソコンでデータを保存する場所のことです。それぞれに「C:」「D:」などのアルファベットが割り当てられています。
よくあるドライブの種類:
- Cドライブ:Windowsがインストールされているメインのハードディスク
- Dドライブ:データ保存用のハードディスクやDVD/CD
- Eドライブ:USBメモリや外付けハードディスク
- その他:ネットワークドライブなど
なぜコマンドで確認するの?
メリット:
- 速い:マウスで操作するより早い
- 自動化:バッチファイルで処理を自動化できる
- 詳細情報:エクスプローラーでは見えない情報も取得可能
- リモート操作:遠隔地のパソコンも同じ方法で操作
使用場面:
- USBメモリが正しく認識されているか確認
- 複数のパソコンで同じ作業を自動化
- サーバー管理での効率的な確認作業
- プログラムからドライブ情報を取得
では、実際のコマンドを見ていきましょう。
基本のコマンドでドライブ一覧を表示する

方法1:wmicコマンド(一番シンプル)
説明:Windows Management Instrumentation(WMI)を使ってドライブ一覧を表示
コマンド:
wmic logicaldisk get name
実行例:
C:\Users\ユーザー名>wmic logicaldisk get name
Name
C:
D:
E:
このコマンドの特徴:
- 管理者権限が不要
- 結果がシンプルで見やすい
- どのWindowsでも使える
- バッチファイルに組み込みやすい
注意点:
- Windows 10以降では「将来削除される予定」となっている
- ただし現在でも問題なく使用可能
方法2:fsutilコマンド(詳細情報つき)
説明:ファイルシステムユーティリティを使ってドライブ一覧を表示
コマンド:
fsutil fsinfo drives
実行例:
C:\Users\ユーザー名>fsutil fsinfo drives
Drives: C:\ D:\ E:\
このコマンドの特徴:
- より詳細な情報が取得可能
- ファイルシステムの管理に特化
- 安定して動作する
注意点:
- 管理者権限が必要
- 一般ユーザーでは実行できない
管理者権限でコマンドプロンプトを開く方法:
- スタートメニューで「cmd」と入力
- 「コマンドプロンプト」を右クリック
- 「管理者として実行」を選択
方法3:PowerShellコマンド(高機能)
説明:PowerShellというより高機能なコマンド環境を使用
コマンド:
Get-PSDrive -PSProvider FileSystem
実行例:
PS C:\Users\ユーザー名> Get-PSDrive -PSProvider FileSystem
Name Used (GB) Free (GB) Provider Root
---- --------- --------- -------- ----
C 125.45 234.55 FileSystem C:\
D 45.20 154.80 FileSystem D:\
E 2.15 27.85 FileSystem E:\
このコマンドの特徴:
- 使用容量と空き容量も表示
- より詳細な情報が一度に取得可能
- 将来性が高い(Microsoftが推奨)
- スクリプト処理に最適
PowerShellを開く方法:
- スタートメニューで「powershell」と入力
- 「Windows PowerShell」をクリック
- 青い画面が表示される
方法4:dirコマンド(番外編)
説明:各ドライブの存在確認を兼ねた方法
コマンド:
dir /ad C:\ D:\ E:\ 2>nul
実行例:
C:\Users\ユーザー名>dir /ad C:\ D:\ E:\ 2>nul
C:\ のディレクトリ
2024/01/15 14:30 <DIR> Program Files
2024/01/15 14:30 <DIR> Users
2024/01/15 14:30 <DIR> Windows
D:\ のディレクトリ
2024/01/15 15:00 <DIR> Data
2024/01/15 15:00 <DIR> Backup
このコマンドの特徴:
- ドライブの存在確認と中身の確認を同時に実行
- エラーが出た場合はそのドライブが存在しない
- 古いWindowsでも確実に動作
どのコマンドを使うべき?
用途別の選択指針:
シンプルにドライブ名だけ知りたい:
wmic logicaldisk get name
詳細な情報も含めて確認したい:
Get-PSDrive -PSProvider FileSystem
管理者権限で詳細確認:
fsutil fsinfo drives
古い環境での互換性重視:
dir /ad C:\ D:\ E:\ 2>nul
次の章では、これらのコマンドの使い分けをより詳しく説明します。
コマンドの特徴と使い分け詳細ガイド

各コマンドの詳細比較
機能比較表:
コマンド | 権限 | 情報量 | 速度 | 将来性 | バッチ適性 |
---|---|---|---|---|---|
wmic | 不要 | 基本 | 高 | 低 | 高 |
fsutil | 要 | 詳細 | 高 | 中 | 中 |
PowerShell | 不要 | 最詳細 | 中 | 高 | 最高 |
dir | 不要 | 中程度 | 中 | 高 | 中 |
wmicコマンドの詳細活用
基本的な使い方:
wmic logicaldisk get name
より詳細な情報を取得:
wmic logicaldisk get name,size,freespace,drivetype
実行結果例:
Name Size FreeSpace DriveType
C: 500000000000 200000000000 3
D: 200000000000 150000000000 3
E: 32000000000 30000000000 2
DriveType の意味:
- 2:リムーバブルディスク(USBメモリ、フロッピー)
- 3:ローカルディスク(ハードディスク、SSD)
- 4:ネットワークドライブ
- 5:光学ドライブ(CD、DVD、Blu-ray)
特定のドライブタイプだけ表示:
wmic logicaldisk where drivetype=2 get name
(USBメモリなどのリムーバブルディスクのみ表示)
fsutilコマンドの詳細活用
基本的な使い方:
fsutil fsinfo drives
特定ドライブの詳細情報:
fsutil fsinfo drivetype C:
実行結果例:
C: - Fixed Drive
ボリューム情報の取得:
fsutil fsinfo volumeinfo C:
実行結果例:
Volume Name : Windows
Volume Serial Number : 0x12345678
Max Component Length : 255
File System Name : NTFS
Supports Case-sensitive filenames : Disabled
Preserves Case of filenames : Enabled
Supports Unicode in filenames : Enabled
PowerShellコマンドの詳細活用
基本的な使い方:
Get-PSDrive -PSProvider FileSystem
特定の情報のみ表示:
Get-PSDrive -PSProvider FileSystem | Select-Object Name, Root
実行結果例:
Name Root
---- ----
C C:\
D D:\
E E:\
CSV形式で出力:
Get-PSDrive -PSProvider FileSystem | Export-Csv -Path drives.csv -NoTypeInformation
ドライブの使用率を計算:
Get-PSDrive -PSProvider FileSystem | ForEach-Object {
$used = $_.Used / 1GB
$free = $_.Free / 1GB
$total = $used + $free
$percent = [math]::Round(($used / $total) * 100, 2)
Write-Output "$($_.Name): $percent% used"
}
環境別の推奨コマンド
新しいシステム(Windows 10/11):
Get-PSDrive -PSProvider FileSystem
理由:将来性が高く、詳細な情報が取得可能
古いシステム(Windows 7/8):
wmic logicaldisk get name
理由:互換性が高く、確実に動作
サーバー環境:
fsutil fsinfo drives
理由:システム管理に特化した詳細情報
バッチファイル組み込み:
wmic logicaldisk get name /format:list
理由:解析しやすい形式で出力
エラー対処法
「’wmic’ は、内部コマンドまたは外部コマンド…」エラー:
- Windows 11の一部バージョンで発生
- PowerShellコマンドを代替使用
- または
wmic.exe
のフルパス指定
「アクセスが拒否されました」エラー(fsutil):
- 管理者権限でコマンドプロンプトを起動
- または他のコマンドを使用
PowerShellで「実行ポリシー」エラー:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
これらの詳細を理解することで、状況に応じて最適なコマンドを選択できるようになります。
実践的な応用例とバッチファイル活用

応用例1:ドライブ一覧をファイルに保存
説明:ドライブ情報をテキストファイルに保存して、後で確認や比較に使用
PowerShellでの保存:
Get-PSDrive -PSProvider FileSystem | Out-File -FilePath "C:\drives_info.txt" -Encoding UTF8
wmicでの保存:
wmic logicaldisk get name,size,freespace > drives.txt
実行結果ファイル例:
Name Size FreeSpace
C: 500000000000 200000000000
D: 200000000000 150000000000
E: 32000000000 30000000000
日付付きファイル名での保存:
wmic logicaldisk get name,size,freespace > drives_%date:~0,4%%date:~5,2%%date:~8,2%.txt
(例:drives_20241225.txt)
応用例2:USBメモリの自動検出バッチファイル
説明:USBメモリが接続されているかを自動チェックするバッチファイル
基本的なUSB検出バッチ:
@echo off
echo USBドライブをチェック中...
wmic logicaldisk where drivetype=2 get name /format:list | find "Name=" > nul
if %errorlevel%==0 (
echo USBドライブが見つかりました:
wmic logicaldisk where drivetype=2 get name
) else (
echo USBドライブは接続されていません
)
pause
高機能USB検出バッチ:
@echo off
setlocal enabledelayedexpansion
echo ====== USBドライブ検出ツール ======
echo.
rem USBドライブの一覧を取得
for /f "skip=1 tokens=*" %%i in ('wmic logicaldisk where drivetype^=2 get name /format:table') do (
set drive=%%i
if "!drive!" neq "" (
set drive=!drive: =!
if "!drive!" neq "" (
echo 発見: !drive!
rem ドライブの詳細情報を表示
for /f "skip=1 tokens=2" %%j in ('wmic logicaldisk where name^="!drive!" get size /format:table') do (
set size=%%j
if "!size!" neq "" (
set /a sizeGB=!size!/1073741824
echo 容量: !sizeGB! GB
)
)
rem 空き容量を表示
for /f "skip=1 tokens=2" %%k in ('wmic logicaldisk where name^="!drive!" get freespace /format:table') do (
set free=%%k
if "!free!" neq "" (
set /a freeGB=!free!/1073741824
echo 空き容量: !freeGB! GB
)
)
echo.
)
)
)
echo チェック完了
pause
応用例3:ドライブ容量監視バッチファイル
説明:各ドライブの容量をチェックして、空き容量が少ない場合に警告
容量監視バッチ:
@echo off
setlocal enabledelayedexpansion
echo ====== ドライブ容量監視 ======
echo.
rem 警告する空き容量の閾値(GB)
set /a WARNING_THRESHOLD=10
for /f "skip=1 tokens=1,2,3" %%a in ('wmic logicaldisk get name^,size^,freespace /format:csv ^| find ","') do (
set freespace=%%b
set name=%%c
set size=%%d
if "!name!" neq "" if "!freespace!" neq "" (
set /a freespaceGB=!freespace!/1073741824
set /a sizeGB=!size!/1073741824
set /a usedGB=!sizeGB!-!freespaceGB!
echo ドライブ !name!
echo 総容量: !sizeGB! GB
echo 使用容量: !usedGB! GB
echo 空き容量: !freespaceGB! GB
if !freespaceGB! lss %WARNING_THRESHOLD% (
echo ★警告: 空き容量が不足しています!
)
echo.
)
)
pause
応用例4:ネットワークドライブの状態確認
説明:ネットワークドライブが正常に接続されているかを確認
ネットワークドライブチェック:
@echo off
echo ====== ネットワークドライブ状態確認 ======
echo.
rem ネットワークドライブ(DriveType=4)をチェック
wmic logicaldisk where drivetype=4 get name,providername /format:list | find "=" > temp_net.txt
if exist temp_net.txt (
for /f "tokens=1,2 delims==" %%a in (temp_net.txt) do (
if "%%a"=="Name" echo ドライブ: %%b
if "%%a"=="ProviderName" echo 接続先: %%b & echo.
)
del temp_net.txt
) else (
echo ネットワークドライブは接続されていません
)
pause
応用例5:定期的なドライブ情報ログ作成
説明:システム管理用に定期的にドライブ情報を記録
ログ作成バッチ:
@echo off
setlocal
rem ログファイルのパス
set LOGFILE=C:\Logs\drive_status.log
rem ログディレクトリが存在しない場合は作成
if not exist C:\Logs mkdir C:\Logs
rem 現在の日時を取得
for /f "tokens=1,2,3,4 delims=/ " %%a in ('date /t') do (
set DATE=%%a%%b%%c
)
for /f "tokens=1,2 delims=: " %%a in ('time /t') do (
set TIME=%%a:%%b
)
rem ログファイルに出力
echo ==================== >> %LOGFILE%
echo ドライブ状態ログ >> %LOGFILE%
echo 日時: %DATE% %TIME% >> %LOGFILE%
echo ==================== >> %LOGFILE%
wmic logicaldisk get name,drivetype,size,freespace /format:csv >> %LOGFILE%
echo. >> %LOGFILE%
echo ログ作成完了: %LOGFILE%
タスクスケジューラでの自動実行設定:
- 「タスクスケジューラ」を開く
- 「基本タスクの作成」を選択
- 名前:「ドライブ監視」
- トリガー:「毎日」など
- 操作:上記バッチファイルを指定
応用例6:PowerShellでの高度な分析
説明:PowerShellを使用してより詳細な分析を実行
詳細分析スクリプト:
# ドライブ情報の詳細分析
$drives = Get-PSDrive -PSProvider FileSystem
Write-Host "====== ドライブ詳細分析レポート ======" -ForegroundColor Green
Write-Host "実行日時: $(Get-Date)" -ForegroundColor Gray
Write-Host ""
foreach ($drive in $drives) {
$totalSize = ($drive.Used + $drive.Free) / 1GB
$usedSize = $drive.Used / 1GB
$freeSize = $drive.Free / 1GB
$usagePercent = [math]::Round(($usedSize / $totalSize) * 100, 2)
Write-Host "ドライブ $($drive.Name):" -ForegroundColor Yellow
Write-Host " 総容量: $([math]::Round($totalSize, 2)) GB"
Write-Host " 使用量: $([math]::Round($usedSize, 2)) GB ($usagePercent%)"
Write-Host " 空き容量: $([math]::Round($freeSize, 2)) GB"
# 使用率による警告
if ($usagePercent -gt 90) {
Write-Host " ⚠️ 警告: 使用率が90%を超えています!" -ForegroundColor Red
} elseif ($usagePercent -gt 80) {
Write-Host " ⚠️ 注意: 使用率が80%を超えています" -ForegroundColor Yellow
} else {
Write-Host " ✅ 正常" -ForegroundColor Green
}
Write-Host ""
}
# CSV形式でレポート保存
$drives | Select-Object Name,
@{Name="TotalSize(GB)"; Expression={[math]::Round(($_.Used + $_.Free) / 1GB, 2)}},
@{Name="UsedSize(GB)"; Expression={[math]::Round($_.Used / 1GB, 2)}},
@{Name="FreeSize(GB)"; Expression={[math]::Round($_.Free / 1GB, 2)}},
@{Name="UsagePercent"; Expression={[math]::Round(($_.Used / ($_.Used + $_.Free)) * 100, 2)}} |
Export-Csv -Path "drive_report_$(Get-Date -Format 'yyyyMMdd').csv" -NoTypeInformation
Write-Host "レポートを保存しました: drive_report_$(Get-Date -Format 'yyyyMMdd').csv" -ForegroundColor Green
これらの応用例を参考に、自分の環境に合わせたドライブ管理ツールを作成してみてください。
システム管理での実践活用

サーバー管理での活用
複数サーバーの一括確認:
リモートサーバーのドライブ情報取得:
# 複数サーバーのドライブ情報を一括取得
$servers = @("Server1", "Server2", "Server3")
foreach ($server in $servers) {
Write-Host "=== $server ===" -ForegroundColor Green
try {
Invoke-Command -ComputerName $server -ScriptBlock {
Get-PSDrive -PSProvider FileSystem | Select-Object Name,
@{Name="Size(GB)"; Expression={[math]::Round(($_.Used + $_.Free) / 1GB, 2)}},
@{Name="Free(GB)"; Expression={[math]::Round($_.Free / 1GB, 2)}}
}
}
catch {
Write-Host "接続エラー: $_" -ForegroundColor Red
}
Write-Host ""
}
データバックアップでの活用
バックアップ先ドライブの容量確認:
@echo off
setlocal enabledelayedexpansion
rem バックアップ先ドライブを設定
set BACKUP_DRIVE=E:
echo バックアップ先ドライブ %BACKUP_DRIVE% の容量をチェック中...
rem ドライブの存在確認
wmic logicaldisk where name="%BACKUP_DRIVE%" get freespace /format:list | find "FreeSpace=" > temp.txt
if exist temp.txt (
for /f "tokens=2 delims==" %%a in (temp.txt) do (
set freespace=%%a
)
del temp.txt
rem GB単位に変換
set /a freespaceGB=!freespace!/1073741824
echo 空き容量: !freespaceGB! GB
rem 最低必要容量をチェック(例:50GB)
if !freespaceGB! lss 50 (
echo 警告: バックアップに必要な容量が不足しています
echo 最低50GB必要ですが、現在!freespaceGB!GBしかありません
pause
exit /b 1
) else (
echo バックアップ開始可能です
rem ここにバックアップ処理を記述
)
) else (
echo エラー: バックアップドライブ %BACKUP_DRIVE% が見つかりません
pause
exit /b 1
)
USBメモリの安全な取り外し確認
USBメモリ使用中チェック:
# USBメモリが使用中かどうかチェック
function Test-DriveInUse {
param([string]$DriveLetter)
$processes = Get-Process | Where-Object {
$_.Path -and $_.Path.StartsWith($DriveLetter)
}
if ($processes) {
Write-Host "警告: ドライブ $DriveLetter は以下のプロセスで使用中です:" -ForegroundColor Red
$processes | Select-Object ProcessName, Path | Format-Table
return $true
} else {
Write-Host "ドライブ $DriveLetter は使用されていません。安全に取り外せます。" -ForegroundColor Green
return $false
}
}
# 使用例
$usbDrives = Get-PSDrive -PSProvider FileSystem | Where-Object {
$drive = Get-WmiObject -Class Win32_LogicalDisk | Where-Object {$_.DeviceID -eq "$($_.Name):"}
$drive.DriveType -eq 2
}
foreach ($usb in $usbDrives) {
Test-DriveInUse -DriveLetter "$($usb.Name):"
}
システム監視での活用
監視アラート設定:
# ドライブ容量監視とメール通知
function Send-DriveAlert {
param(
[string]$DriveName,
[double]$UsagePercent,
[string]$SmtpServer,
[string]$From,
[string]$To
)
$subject = "ドライブ容量警告: $DriveName"
$body = "ドライブ $DriveName の使用率が $UsagePercent% に達しました。"
Send-MailMessage -SmtpServer $SmtpServer -From $From -To $To -Subject $subject -Body $body
}
# 監視実行
$alertThreshold = 85 # 85%でアラート
Get-PSDrive -PSProvider FileSystem | ForEach-Object {
$totalSize = $_.Used + $_.Free
$usagePercent = [math]::Round(($_.Used / $totalSize) * 100, 2)
if ($usagePercent -gt $alertThreshold) {
Write-Host "アラート: ドライブ $($_.Name) 使用率 $usagePercent%" -ForegroundColor Red
# メール通知(設定が必要)
# Send-DriveAlert -DriveName $_.Name -UsagePercent $usagePercent -SmtpServer "smtp.example.com" -From "admin@example.com" -To "alert@example.com"
}
}
ログ管理と分析
ドライブ使用履歴の追跡:
# ドライブ使用状況の履歴管理
$logPath = "C:\Logs\DriveHistory.csv"
# CSVヘッダーが存在しない場合は作成
if (!(Test-Path $logPath)) {
"DateTime,DriveName,TotalSize,UsedSize,FreeSize,UsagePercent" | Out-File $logPath -Encoding UTF8
}
# 現在のドライブ情報を記録
Get-PSDrive -PSProvider FileSystem | ForEach-Object {
$totalSize = [math]::Round(($_.Used + $_.Free) / 1GB, 2)
$usedSize = [math]::Round($_.Used / 1GB, 2)
$freeSize = [math]::Round($_.Free / 1GB, 2)
$usagePercent = [math]::Round(($_.Used / ($_.Used + $_.Free)) * 100, 2)
$logEntry = "$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss'),$($_.Name),$totalSize,$usedSize,$freeSize,$usagePercent"
$logEntry | Out-File $logPath -Append -Encoding UTF8
}
Write-Host "ドライブ情報をログに記録しました: $logPath"
履歴データの分析:
# ドライブ使用傾向の分析
$csvData = Import-Csv "C:\Logs\DriveHistory.csv"
# ドライブごとの使用率推移を表示
$drives = $csvData | Group-Object DriveName
foreach ($drive in $drives) {
Write-Host "=== ドライブ $($drive.Name) の使用率推移 ===" -ForegroundColor Yellow
$latest = $drive.Group | Sort-Object DateTime | Select-Object -Last 5
$latest | Select-Object DateTime, UsagePercent | Format-Table
# 使用率の増加傾向をチェック
if ($latest.Count -ge 2) {
$oldUsage = [double]$latest[0].UsagePercent
$newUsage = [double]$latest[-1].UsagePercent
$trend = $newUsage - $oldUsage
if ($trend -gt 5) {
Write-Host "⚠️ 注意: 使用率が急増しています (+$([math]::Round($trend, 2))%)" -ForegroundColor Red
}
}
Write-Host ""
}
トラブルシューティングと高度な設定
よくある問題と解決方法
問題1 :「wmic」コマンドが動作しない
症状:
'wmic' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
原因と解決方法:
- Windows 11の一部環境でwmicが削除されている
- 代替手段としてPowerShellを使用:
Get-CimInstance -ClassName Win32_LogicalDisk | Select-Object DeviceID, DriveType, Size, FreeSpace
問題2:管理者権限が取得できない
症状:fsutilコマンドで「アクセスが拒否されました」
解決方法:
- スタートメニューで「cmd」と入力
- 「コマンドプロンプト」を右クリック
- 「管理者として実行」を選択
- UACダイアログで「はい」をクリック
問題3:PowerShellの実行ポリシーエラー
症状:
このシステムではスクリプトの実行が無効になっているため、
ファイル **.ps1 を読み込むことができません
解決方法:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
環境別の最適化設定
古いWindows環境(Windows 7/8):
@echo off
rem 互換性を重視した方法
echo ドライブ一覧:
for %%d in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
if exist %%d:\ echo %%d:
)
最新Windows環境(Windows 10/11):
# 最新機能を活用
Get-Volume | Where-Object {$_.DriveLetter} |
Select-Object DriveLetter, FileSystemLabel, Size, SizeRemaining |
Format-Table -AutoSize
企業環境での設定:
# セキュリティとログを重視
$scriptBlock = {
$drives = Get-PSDrive -PSProvider FileSystem
$result = @()
foreach ($drive in $drives) {
$result += [PSCustomObject]@{
Computer = $env:COMPUTERNAME
DriveLetter = $drive.Name
TotalSizeGB = [math]::Round(($drive.Used + $drive.Free) / 1GB, 2)
FreeSpaceGB = [math]::Round($drive.Free / 1GB, 2)
Timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
}
}
return $result
}
# ローカル実行
$result = & $scriptBlock
# 結果をCSV形式で保存(監査ログとして)
$result | Export-Csv -Path "DriveAudit_$(Get-Date -Format 'yyyyMMdd').csv" -NoTypeInformation
自動化とスケジューリング
Windowsタスクスケジューラーでの自動実行:
バッチファイルの例:
@echo off
rem 毎日実行するドライブチェック
setlocal
rem ログディレクトリ作成
if not exist "C:\DriveMonitor" mkdir "C:\DriveMonitor"
rem 実行ログ
echo %date% %time% - ドライブ監視開始 >> "C:\DriveMonitor\monitor.log"
rem ドライブ情報取得
powershell -Command "Get-PSDrive -PSProvider FileSystem | Export-Csv -Path 'C:\DriveMonitor\drives_%date:~0,4%%date:~5,2%%date:~8,2%.csv' -NoTypeInformation"
rem 容量警告チェック
powershell -Command "Get-PSDrive -PSProvider FileSystem | Where-Object {($_.Used/($_.Used+$_.Free))*100 -gt 80} | ForEach-Object {Write-Output \"警告: ドライブ $($_.Name) 使用率が80%を超えています\"}" >> "C:\DriveMonitor\alerts.log"
echo %date% %time% - ドライブ監視完了 >> "C:\DriveMonitor\monitor.log"
タスクスケジューラー設定手順:
taskschd.msc
を実行- 「基本タスクの作成」を選択
- 名前:「ドライブ監視」
- トリガー:「毎日」午前9時
- 操作:上記バッチファイルを指定
ネットワーク環境での活用
リモートマシンのドライブ情報取得:
# 複数のリモートコンピューターの情報を並列取得
$computers = @("PC001", "PC002", "PC003")
$jobs = foreach ($computer in $computers) {
Start-Job -Name "DriveCheck_$computer" -ScriptBlock {
param($ComputerName)
try {
$drives = Get-CimInstance -ClassName Win32_LogicalDisk -ComputerName $ComputerName
foreach ($drive in $drives) {
[PSCustomObject]@{
Computer = $ComputerName
Drive = $drive.DeviceID
TotalSizeGB = [math]::Round($drive.Size / 1GB, 2)
FreeSpaceGB = [math]::Round($drive.FreeSpace / 1GB, 2)
DriveType = switch ($drive.DriveType) {
2 { "Removable" }
3 { "Local Disk" }
4 { "Network" }
5 { "CD-ROM" }
default { "Unknown" }
}
Status = "Success"
}
}
}
catch {
[PSCustomObject]@{
Computer = $ComputerName
Status = "Error: $($_.Exception.Message)"
}
}
} -ArgumentList $computer
}
# 結果を待機して表示
$results = $jobs | Wait-Job | Receive-Job
$jobs | Remove-Job
# 結果の表示
$results | Format-Table -AutoSize
まとめ:コマンドライン駆動でシステム管理をレベルアップ
重要なポイントをおさらい
基本的なコマンド
- wmic:
wmic logicaldisk get name
(シンプル、広く対応) - fsutil:
fsutil fsinfo drives
(詳細情報、管理者権限必要) - PowerShell:
Get-PSDrive -PSProvider FileSystem
(高機能、将来性高)
コマンドの使い分け
- 簡単な確認:wmicまたはPowerShell
- 詳細な管理:fsutilまたはPowerShell
- 自動化処理:PowerShell推奨
- 古い環境:wmicまたはdir
実践的な活用場面
- USBメモリの検出:自動バックアップシステム
- 容量監視:アラート機能付きシステム
- ログ管理:履歴追跡と傾向分析
- リモート管理:複数マシンの一括監視
セキュリティと注意点
セキュリティ考慮事項
- 管理者権限での実行は必要最小限に
- ネットワーク経由の情報取得時は認証を確実に
- ログファイルの保護と定期的なクリーンアップ
運用上の注意点
- 自動実行スクリプトは十分なテストを実施
- エラーハンドリングを必ず組み込む
- 重要システムでの実行前は必ずバックアップ
コメント