进程和服务的管理,是系统维护和自动化运维中非常重要的一部分。
PowerShell 提供了一组简洁而强大的 Cmdlet,用于查看、启动、停止、筛选和控制本地(或远程)计算机上的进程与服务。
本节将详细讲解如何使用 PowerShell 管理进程与服务,包括基本操作命令、典型应用场景及常见问题,帮助你提升系统管理效率。
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 -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 notepadWait-Process -Name notepadWrite-Output "记事本已关闭"
PowerShell 对服务管理的支持非常完备,常用 Cmdlet 如下:
Cmdlet | 功能说明 |
---|---|
Get-Process -Name notepad1 | 查看服务状态 |
Start-Service | 启动服务 |
Stop-Service | 停止服务 |
Restart-Service | 重启服务 |
Set-Service | 更改服务属性 |
Get-Process -Name notepad1
查看所有服务:
Get-Process -Name notepad1
筛选正在运行的服务:
Get-Process -Name notepad1 | Where-Object {$_.Status -eq "Running"}
查看特定服务:
Get-Process -Name notepad1 -Name W32Time
启动 Windows 时间服务:
Get-Process -Name notepad4
停止服务(如果权限不足可能会报错):
Get-Process -Name notepad5
Restart-Service
Get-Process -Name notepad6
Set-Service
将服务启动类型设为自动:
Get-Process -Name notepad7
将服务禁用:
Get-Process -Name notepad8
比较项 | 服务(Service) | 进程(Process) |
---|---|---|
启动方式 | 自动启动 / 手动启动 / 禁用 | 用户手动或程序触发 |
运行状态 | 持续后台运行,通常无界面 | 可前台交互,生命周期较短 |
管理方式 | Get-Process -Name notepad1 , Start-Service 等 | Get-Process , Start-Process 等 |
示例 | Windows Update(wuauserv) | Notepad、chrome.exe 等 |
$svc = Get-Process -Name notepad1 -Name Spoolerif ($svc.Status -ne "Running") { Restart-Service -Name Spooler Write-Output "服务已重启"}
Get-Process | Where-Object { $_.CPU -gt 50 } | Stop-Process -Force
注意:这类操作务必在测试环境或确认无风险的前提下进行。
问题 | 原因与建议说明 |
---|---|
无法停止服务 | 需要管理员权限,建议使用"以管理员身份运行" |
进程名或服务名拼写错误 | 可先使用 Get-Process 或 Get-Process -Name notepad1 获取准确名称 |
服务已停止但仍显示为 Running | 某些服务具有保护机制,建议使用 Restart-Service 尝试重启 |
PowerShell 通过标准化的命令集,使得进程与服务的管理变得简单而高效:
使用 Get-*
查看信息,Start-*
/Stop-*
控制行为,Set-*
修改属性
管道 + 条件筛选 + 对象操作,适合批量管理任务
可以结合计划任务、监控脚本,构建自动化运维体系