Appearance
任务管理
任务管理器是 Windows 系统中监控系统性能和管理运行程序的重要工具。本章介绍任务管理器的使用方法和进程管理技巧。
任务管理器概述
打开任务管理器
有多种方式可以打开任务管理器:
text
方式一:快捷键 Ctrl + Shift + Esc
方式二:快捷键 Ctrl + Alt + Delete → 任务管理器
方式三:右键任务栏 → 任务管理器
方式四:Win + R → taskmgr
方式五:开始菜单搜索"任务管理器"
方式六:PowerShell: Start-Process taskmgr任务管理器视图
任务管理器有两种视图模式:
text
简洁视图:
├── 只显示正在运行的应用程序
└── 点击"详细信息"切换到完整视图
详细视图:
├── 进程选项卡
├── 性能选项卡
├── 应用历史记录选项卡
├── 启动选项卡
├── 用户选项卡
├── 详细信息选项卡
└── 服务选项卡进程管理
查看进程
powershell
# 使用 PowerShell 查看进程
Get-Process
# 查看特定进程
Get-Process chrome
Get-Process -Name "notepad"
# 查看进程详细信息
Get-Process | Format-List *
# 按内存使用排序
Get-Process | Sort-Object WorkingSet -Descending | Select-Object -First 10
# 按 CPU 使用排序
Get-Process | Sort-Object CPU -Descending | Select-Object -First 10
# 使用 tasklist 命令
tasklist
tasklist /fi "imagename eq chrome.exe"
tasklist /v # 详细信息进程信息详解
powershell
# 查看进程的关键属性
Get-Process | Select-Object Name, Id, CPU, WorkingSet, VirtualMemorySize, StartTime
# 属性说明
# Name - 进程名称
# Id - 进程 ID(PID)
# CPU - 累计 CPU 时间(秒)
# WorkingSet - 物理内存使用量(字节)
# VirtualMemorySize - 虚拟内存大小(字节)
# StartTime - 进程启动时间
# Threads - 线程数
# Handles - 句柄数
# Path - 程序路径
# 查看进程的线程信息
$process = Get-Process -Name "chrome" | Select-Object -First 1
$process.Threads
# 查看进程加载的模块
$process.Modules结束进程
powershell
# 使用 PowerShell 结束进程
Stop-Process -Name "notepad"
Stop-Process -Id 1234
Stop-Process -Name "chrome" -Force
# 结束多个进程
Get-Process chrome | Stop-Process -Force
# 使用 taskkill 命令
taskkill /IM notepad.exe
taskkill /PID 1234
taskkill /IM chrome.exe /F # 强制结束
# 结束进程树(包括子进程)
taskkill /F /IM explorer.exe /T
# 结束无响应的进程
Get-Process | Where-Object { $_.Responding -eq $false } | Stop-Process -Force启动进程
powershell
# 使用 PowerShell 启动进程
Start-Process notepad
Start-Process "C:\Program Files\Google\Chrome\Application\chrome.exe"
# 启动进程并传递参数
Start-Process notepad -ArgumentList "C:\test.txt"
# 以管理员身份运行
Start-Process powershell -Verb RunAs
# 最小化启动
Start-Process notepad -WindowStyle Minimized
# 最大化启动
Start-Process notepad -WindowStyle Maximized
# 等待进程结束
$process = Start-Process notepad -PassThru
$process.WaitForExit()
Write-Host "进程已结束"
# 使用 start 命令
start notepad
start "" "C:\Program Files\Google\Chrome\Application\chrome.exe"性能监控
CPU 监控
powershell
# 查看 CPU 使用率
Get-Counter -Counter "\Processor(_Total)\% Processor Time"
# 持续监控 CPU
Get-Counter -Counter "\Processor(_Total)\% Processor Time" -Continuous
# 查看每个核心的使用率
Get-Counter -Counter "\Processor(*)\% Processor Time"
# 查看进程 CPU 使用
Get-Process | Sort-Object CPU -Descending | Select-Object Name, CPU -First 10
# 使用 WMI 获取 CPU 信息
Get-CimInstance -ClassName Win32_Processor |
Select-Object Name, NumberOfCores, NumberOfLogicalProcessors, MaxClockSpeed内存监控
powershell
# 查看内存使用情况
Get-Counter -Counter "\Memory\Available MBytes"
Get-Counter -Counter "\Memory\% Committed Bytes In Use"
# 查看系统内存信息
$os = Get-CimInstance -ClassName Win32_OperatingSystem
$freeMemory = [math]::Round($os.FreePhysicalMemory / 1MB, 2)
$totalMemory = [math]::Round($os.TotalVisibleMemorySize / 1MB, 2)
$usedMemory = $totalMemory - $freeMemory
$usedPercent = [math]::Round(($usedMemory / $totalMemory) * 100, 2)
Write-Host "总内存: $totalMemory GB"
Write-Host "已用内存: $usedMemory GB ($usedPercent%)"
Write-Host "可用内存: $freeMemory GB"
# 查看进程内存使用
Get-Process | Sort-Object WorkingSet -Descending |
Select-Object Name, @{N='Memory(MB)';E={[math]::Round($_.WorkingSet/1MB,2)}} -First 10
# 查看页面文件使用
Get-CimInstance -ClassName Win32_PageFileUsage |
Select-Object Name, @{N='Size(GB)';E={[math]::Round($_.AllocatedBaseSize/1024,2)}},
@{N='Used(GB)';E={[math]::Round($_.CurrentUsage/1024,2)}}磁盘监控
powershell
# 查看磁盘活动
Get-Counter -Counter "\PhysicalDisk(_Total)\Disk Read Bytes/sec"
Get-Counter -Counter "\PhysicalDisk(_Total)\Disk Write Bytes/sec"
Get-Counter -Counter "\PhysicalDisk(_Total)\% Disk Time"
# 查看磁盘队列
Get-Counter -Counter "\PhysicalDisk(_Total)\Avg. Disk Queue Length"
# 查看磁盘空间
Get-CimInstance -ClassName Win32_LogicalDisk |
Select-Object DeviceID,
@{N='Size(GB)';E={[math]::Round($_.Size/1GB,2)}},
@{N='Free(GB)';E={[math]::Round($_.FreeSpace/1GB,2)}}网络监控
powershell
# 查看网络流量
Get-Counter -Counter "\Network Interface(*)\Bytes Total/sec"
# 查看网络连接数
Get-Counter -Counter "\TCPv4\Connections Established"
# 查看当前网络连接
Get-NetTCPConnection -State Established |
Group-Object OwningProcess |
Sort-Object Count -Descending
# 查看进程的网络连接
Get-NetTCPConnection -OwningProcess (Get-Process chrome).Id启动项管理
查看启动项
powershell
# 通过任务管理器查看
# 任务管理器 → 启动选项卡
# 通过 PowerShell 查看启动项
Get-CimInstance Win32_StartupCommand |
Select-Object Name, Command, Location, User
# 查看注册表启动项
Get-ItemProperty "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run"
Get-ItemProperty "HKLM:\Software\Microsoft\Windows\CurrentVersion\Run"
# 查看启动文件夹
Get-ChildItem "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Startup"
Get-ChildItem "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup"管理启动项
powershell
# 禁用启动项(通过注册表)
Remove-ItemProperty "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run" -Name "程序名" -ErrorAction SilentlyContinue
# 添加启动项
Set-ItemProperty "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run" -Name "MyApp" -Value "C:\Path\To\App.exe"
# 创建启动快捷方式
$WshShell = New-Object -ComObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Startup\MyApp.lnk")
$Shortcut.TargetPath = "C:\Path\To\App.exe"
$Shortcut.Save()
# 删除启动快捷方式
Remove-Item "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Startup\MyApp.lnk" -ErrorAction SilentlyContinue服务管理
查看服务
powershell
# 查看所有服务
Get-Service
# 查看运行中的服务
Get-Service | Where-Object Status -eq "Running"
# 查看已停止的服务
Get-Service | Where-Object Status -eq "Stopped"
# 查看特定服务
Get-Service -Name "wuauserv" # Windows Update
Get-Service -Name "Spooler" # Print Spooler
# 查看服务详细信息
Get-CimInstance -ClassName Win32_Service |
Select-Object Name, DisplayName, State, StartMode
# 使用 sc 命令
sc query
sc query wuauserv
sc query type= service state= all启动和停止服务
powershell
# 启动服务
Start-Service -Name "Spooler"
# 停止服务
Stop-Service -Name "Spooler"
# 重启服务
Restart-Service -Name "Spooler"
# 暂停服务
Suspend-Service -Name "Spooler"
# 恢复服务
Resume-Service -Name "Spooler"
# 强制停止服务
Stop-Service -Name "Spooler" -Force
# 使用 sc 命令
sc start Spooler
sc stop Spooler配置服务
powershell
# 设置服务启动类型
Set-Service -Name "Spooler" -StartupType Automatic
Set-Service -Name "Spooler" -StartupType Manual
Set-Service -Name "Spooler" -StartupType Disabled
# 查看服务启动类型
Get-Service -Name "Spooler" | Select-Object Name, Status, StartType
# 使用 sc 命令配置
sc config Spooler start= auto # 自动
sc config Spooler start= demand # 手动
sc config Spooler start= disabled # 禁用
# 设置服务显示名称和描述
Set-Service -Name "Spooler" -DisplayName "打印后台处理程序" -Description "管理打印任务"资源监视器
打开资源监视器
powershell
# 打开资源监视器
resmon
# 通过任务管理器打开
# 任务管理器 → 性能选项卡 → 打开资源监视器资源监视器功能
资源监视器提供更详细的系统资源监控:
text
CPU 选项卡:
├── 按进程查看 CPU 使用
├── 按服务查看 CPU 使用
├── 关联的句柄
└── 关联的模块
内存 选项卡:
├── 进程内存使用
├── 物理内存分布
└── 硬中断/软中断
磁盘 选项卡:
├── 磁盘活动进程
├── 磁盘活动
└── 磁盘存储
网络 选项卡:
├── 网络活动进程
├── 网络活动
├── TCP 连接
└── 端口监听进程优先级
查看和设置优先级
powershell
# 查看进程优先级
Get-Process | Select-Object Name, Id, PriorityClass
# 设置进程优先级
$process = Get-Process -Name "notepad"
$process.PriorityClass = "High"
# 优先级级别
# RealTime - 实时(可能导致系统不稳定)
# High - 高
# AboveNormal - 高于标准
# Normal - 标准(默认)
# BelowNormal - 低于标准
# Low - 低
# 启动进程时设置优先级
Start-Process notepad -PriorityClass "High"
# 使用 wmic 设置优先级
wmic process where name="notepad.exe" call setpriority 128
# 优先级值:64=低, 16384=低于标准, 32=标准, 32768=高于标准, 128=高, 256=实时进程关联性
powershell
# 查看进程 CPU 关联性
$process = Get-Process -Name "notepad"
$process.ProcessorAffinity
# 设置进程 CPU 关联性
# 关联性是一个位掩码,每个位代表一个 CPU 核心
# 1 = 核心 0, 2 = 核心 1, 4 = 核心 2, 8 = 核心 3
# 3 = 核心 0 和 1, 15 = 核心 0-3
$process.ProcessorAffinity = 3 # 使用核心 0 和 1
# 启动进程时设置关联性
Start-Process notepad
$process = Get-Process notepad | Select-Object -Last 1
$process.ProcessorAffinity = 15后台进程管理
查看后台应用
powershell
# 查看后台进程
Get-Process | Where-Object { $_.MainWindowTitle -eq "" }
# 查看有窗口的进程
Get-Process | Where-Object { $_.MainWindowTitle -ne "" }
# 查看后台应用设置
# 设置 → 隐私 → 后台应用管理后台应用
powershell
# 通过注册表禁用后台应用
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\BackgroundAccessApplications" `
-Name GlobalUserDisabled -Value 1
# 启用后台应用
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\BackgroundAccessApplications" `
-Name GlobalUserDisabled -Value 0性能日志和警报
创建数据收集器
powershell
# 打开性能监视器
perfmon
# 创建数据收集器集
# 性能监视器 → 数据收集器集 → 用户定义 → 右键 → 新建 → 数据收集器集
# 使用 logman 命令
logman create counter MyCounter -c "\Processor(_Total)\% Processor Time" "\Memory\Available MBytes"
# 启动数据收集
logman start MyCounter
# 停止数据收集
logman stop MyCounter
# 查看数据收集器
logman query
# 删除数据收集器
logman delete MyCounter小结
本章介绍了 Windows 任务管理的主要内容:
- 任务管理器:了解任务管理器的界面和功能
- 进程管理:查看、启动和结束进程
- 性能监控:监控 CPU、内存、磁盘和网络
- 启动项管理:管理开机启动的程序
- 服务管理:启动、停止和配置服务
- 资源监视器:使用高级监控工具
- 进程优先级:调整进程的优先级和 CPU 关联性
- 后台进程:管理后台运行的应用
建议:
- 定期检查系统性能,及时发现异常
- 合理管理启动项,提高系统启动速度
- 不要随意结束系统进程
- 使用资源监视器进行详细诊断
- 为重要进程设置适当的优先级
