以下是 Windows PowerShell 中最常用、最实用的命令(Cmdlet)清单,按功能分类。每个命令都遵循“动词-名词”命名规则,易于理解和记忆。
一、基础信息与帮助
| 命令 | 别名 | 作用 | |
|---|---|---|---|
Get-Command |
gcm |
列出所有可用的命令(Cmdlet、函数、别名) | |
Get-Help |
help, man |
显示命令的帮助文档(用 -Examples 查看实例) |
|
Get-Member |
gm |
查看一个对象的属性、方法(管道后使用,如 `Get-Process \ | gm`) |
Get-Alias |
- | 列出所有别名,或查找某个命令的别名 |
二、文件与目录管理
| 命令 | 别名 | 作用 |
|---|---|---|
Get-ChildItem |
ls, dir |
列出目录内容(文件、文件夹) |
Set-Location |
cd, chdir |
切换当前目录 |
New-Item |
ni |
创建新文件或文件夹 |
Copy-Item |
cp, copy |
复制文件或文件夹 |
Move-Item |
mv, move |
移动文件或文件夹 |
Remove-Item |
rm, del, rd |
删除文件或文件夹 |
Rename-Item |
ren |
重命名文件或文件夹 |
Get-Item |
- | 获取指定路径的项(文件/文件夹)的信息 |
Get-Content |
gc, cat, type |
读取文本文件内容 |
Set-Content |
sc |
写入内容到文件(覆盖) |
Add-Content |
ac |
向文件追加内容 |
常用组合示例
- 列出当前目录所有
.log文件:Get-ChildItem *.log- 递归查找所有大于 100MB 的文件:
Get-ChildItem -Recurse | Where-Object { $_.Length -gt 100MB }
三、进程与服务管理
| 命令 | 别名 | 作用 |
|---|---|---|
Get-Process |
ps, gps |
列出正在运行的进程 |
Stop-Process |
kill |
终止一个或多个进程 |
Start-Process |
start |
启动一个新进程(或打开文件/程序) |
Get-Service |
- | 列出 Windows 服务及其状态 |
Stop-Service |
- | 停止一个服务 |
Start-Service |
- | 启动一个服务 |
Restart-Service |
- | 重启一个服务 |
Set-Service |
- | 更改服务的启动类型(如设为自动启动) |
示例
- 停止记事本进程:
Stop-Process -Name notepad- 查看所有自动启动但当前停止的服务:
Get-Service | Where-Object { $_.StartType -eq 'Automatic' -and $_.Status -eq 'Stopped' }
四、筛选、排序与对象操作
| 命令 | 别名 | 作用 |
|---|---|---|
Where-Object |
where, ? |
按条件筛选对象(非常常用) |
Select-Object |
select |
选择对象的部分属性(类似于 SQL 的 SELECT) |
Sort-Object |
sort |
对对象进行排序 |
Group-Object |
group |
按属性值分组对象 |
ForEach-Object |
foreach, % |
对每个对象执行一段代码块 |
Measure-Object |
measure |
计算对象的数量、总和、平均值等 |
经典管道示例
查看 CPU 占用最高的 5 个进程:Get-Process | Sort-Object CPU -Descending | Select-Object -First 5
五、网络与远程管理
| 命令 | 别名 | 作用 |
|---|---|---|
Test-Connection |
ping |
发送 ICMP 请求测试网络连通性(比系统 ping 更可控) |
Invoke-WebRequest |
curl, iwr |
访问 HTTP/HTTPS 网页或 API,返回结构化内容 |
Invoke-RestMethod |
irm |
专门用于调用 REST API(自动解析 JSON/XML) |
Get-NetIPAddress |
- | 查看本机 IP 地址配置 |
Test-NetConnection |
tnc |
高级网络测试(支持端口扫描、路由追踪) |
Enter-PSSession |
etsn |
启动一个交互式远程 PowerShell 会话 |
Invoke-Command |
icm |
在远程计算机上执行命令或脚本 |
示例
- 测试 80 端口是否开放:
Test-NetConnection google.com -Port 80- 从 REST API 获取数据:
$data = Invoke-RestMethod -Uri "https://api.github.com/repos/PowerShell/PowerShell"然后$data.stargazers_count
六、常用别名速查(方便熟悉 CMD/Linux 的用户)
| 别名 | 对应 Cmdlet |
|---|---|
ls, dir |
Get-ChildItem |
cd, chdir |
Set-Location |
cat, type |
Get-Content |
ps |
Get-Process |
kill |
Stop-Process |
echo |
Write-Output |
clear |
Clear-Host |
history |
Get-History |
pwd |
Get-Location |
七、实用单行命令示例
批量重命名所有
.txt文件,在文件名前加上日期Get-ChildItem *.txt | Rename-Item -NewName { “2025-” + $_.Name }杀死所有占用超过 500MB 内存的 Chrome 进程
Get-Process chrome | Where-Object { $_.WorkingSet64 -gt 500MB } | Stop-Process导出本机已安装的所有软件列表到 CSV 文件
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher | Export-Csv software.csv循环重试一个命令直到成功(适合等待服务启动)
while ( -not (Test-NetConnection localhost -Port 8080) ) { Start-Sleep 5 }
如何发现更多命令?
使用
Get-Command并配合模糊搜索:Get-Command *service列出名称以 service 结尾的命令Get-Command -Verb Get列出所有 Get-* 命令善用
Get-Help的-Examples,例如:Get-Help Invoke-WebRequest -Examples使用 Show-Command 以图形化方式构建命令(仅限 Windows PowerShell 5.1)
掌握以上 20-30 个常用命令,您已经可以完成绝大多数日常管理和自动化任务。PowerShell 的精髓在于“管道 + 对象”,多尝试将命令组合起来,会发现其强大远超传统命令行。