Cmdlet 进程和服务管理
进程和服务的管理,是系统维护和自动化运维中非常重要的一部分。
PowerShell 提供了一组简洁而强大的 Cmdlet,用于查看、启动、停止、筛选和控制本地(或远程)计算机上的进程与服务。
本节将详细讲解如何使用 PowerShell 管理进程与服务,包括基本操作命令、典型应用场景及常见问题,帮助你提升系统管理效率。
一、进程管理(Process)
PowerShell 使用 .NET
的进程对象来处理进程操作,常用的 Cmdlet 包括:
Cmdlet | 功能 |
---|---|
Get-Process |
获取正在运行的进程 |
Stop-Process |
停止指定进程 |
Start-Process |
启动新进程(程序) |
Wait-Process |
等待某个进程结束 |
查看进程:Get-Process
查看所有正在运行的进程:
Get-Process
查看特定进程(如 notepad):
Get-Process -Name notepad
查看多个进程:
Get-Process -Name chrome, notepad
获取进程详细信息并排序:
Get-Process | Sort-Object CPU -Descending | Select-Object -First 5
Stop-Process
根据进程名停止:
Stop-Process -Name notepad
根据进程 ID 停止:
Stop-Process -Id 1234
强制终止进程(避免交互提示):
Stop-Process -Name notepad -Force
启动进程:Start-Process
打开记事本:
Start-Process notepad
以管理员身份打开 PowerShell(需当前窗口有权限):
Start-Process powershell -Verb RunAs
启动网页浏览器并访问网址:
Start-Process "https://learn.microsoft.com"
等待进程:Wait-Process
等待进程执行完毕后继续:
Start-Process notepad Wait-Process -Name notepad Write-Output "记事本已关闭"
二、服务管理(Service)
PowerShell 对服务管理的支持非常完备,常用 Cmdlet 如下:
Cmdlet | 功能说明 |
---|---|
Get-Service |
查看服务状态 |
Start-Service |
启动服务 |
Stop-Service |
停止服务 |
Restart-Service |
重启服务 |
Set-Service |
更改服务属性 |
查看服务:Get-Service
查看所有服务:
Get-Service
筛选正在运行的服务:
Get-Service | Where-Object {$_.Status -eq "Running"}
查看特定服务:
Get-Service -Name W32Time
启动与停止服务
启动 Windows 时间服务:
Start-Service -Name W32Time
停止服务(如果权限不足可能会报错):
Stop-Service -Name W32Time
重启服务:Restart-Service
Restart-Service -Name W32Time
更改服务设置:Set-Service
将服务启动类型设为自动:
Set-Service -Name W32Time -StartupType Automatic
将服务禁用:
Set-Service -Name W32Time -StartupType Disabled
三、服务 vs 进程的区别
比较项 | 服务(Service) | 进程(Process) |
---|---|---|
启动方式 | 自动启动 / 手动启动 / 禁用 | 用户手动或程序触发 |
运行状态 | 持续后台运行,通常无界面 | 可前台交互,生命周期较短 |
管理方式 | Get-Service , Start-Service 等 |
Get-Process , Start-Process 等 |
示例 | Windows Update(wuauserv) | Notepad、chrome.exe 等 |
四、实战示例
示例 1:检测并重启某个异常停止的服务
$svc = Get-Service -Name Spooler if ($svc.Status -ne "Running") { Restart-Service -Name Spooler Write-Output "服务已重启" }
示例 2:关闭所有 CPU 占用高于 50 的进程(需谨慎)
Get-Process | Where-Object { $_.CPU -gt 50 } | Stop-Process -Force
注意:这类操作务必在测试环境或确认无风险的前提下进行。
五、常见问题与注意事项
问题 | 原因与建议说明 |
---|---|
无法停止服务 | 需要管理员权限,建议使用"以管理员身份运行" |
进程名或服务名拼写错误 | 可先使用 Get-Process 或 Get-Service 获取准确名称 |
服务已停止但仍显示为 Running | 某些服务具有保护机制,建议使用 Restart-Service 尝试重启 |
六、小结
PowerShell 通过标准化的命令集,使得进程与服务的管理变得简单而高效:
- 使用
Get-*
查看信息,Start-*
/Stop-*
控制行为,Set-*
修改属性 - 管道 + 条件筛选 + 对象操作,适合批量管理任务
- 可以结合计划任务、监控脚本,构建自动化运维体系
点我分享笔记