#platform / windows
#type / howto
#status / evergreen
[!info] related notes
PowerShell 命令速查
分屏快捷键(Windows Terminal)
| 操作 | 快捷键 | 说明 |
|---|
| 左右拆分窗格 | Alt + Shift + + | 将当前窗口垂直切开(左/右) |
| 上下拆分窗格 | Alt + Shift + - | 将当前窗口水平切开(上/下) |
| 自动拆分窗格 | Alt + Shift + D | 根据长宽比自动选择最优方向 |
| 切换焦点 | Alt + 方向键 | 在各个分屏之间跳转 |
| 调整分屏大小 | Alt + Shift + 方向键 | 微调当前选中分屏的边缘 |
| 关闭当前分屏 | Ctrl + Shift + W | 只关闭当前选中的小窗口 |
| 新建标签页 | Ctrl + Shift + T | 打开新的标签页 |
| 切换标签页 | Ctrl + Tab / Ctrl + Shift + Tab | 下一个/上一个标签页 |
| 关闭标签页 | Ctrl + Shift + W | 关闭当前标签页 |
| 放大字体 | Ctrl + = | 放大终端字体 |
| 缩小字体 | Ctrl + - | 缩小终端字体 |
| 重置字体大小 | Ctrl + 0 | 恢复默认字体大小 |
文件与目录操作
| 命令 | 说明 | 常用示例 |
|---|
ls 或 Get-ChildItem | 列出目录内容 | ls -Force(含隐藏文件) |
ls -Recurse | 递归列出所有文件 | ls -Recurse -Filter *.ts |
cd <path> 或 Set-Location | 切换目录 | cd ..(上级目录) |
pwd 或 Get-Location | 显示当前路径 | pwd |
mkdir <name> 或 New-Item -ItemType Directory | 创建目录 | mkdir src/components |
touch <file> | 创建空文件(PowerShell 无原生 touch) | New-Item -ItemType File app.log |
cp <src> <dst> 或 Copy-Item | 复制文件/目录 | cp -Recurse src/ backup/ |
mv <src> <dst> 或 Move-Item | 移动/重命名 | mv old.txt new.txt |
rm <path> 或 Remove-Item | 删除文件 | rm -Recurse -Force dist/ |
cat <file> 或 Get-Content | 查看文件内容 | cat app.log |
cat <file> -Tail 20 | 查看文件末尾 20 行 | cat app.log -Tail 50 |
cat <file> -Wait | 实时追踪文件变化(类似 tail -f) | cat app.log -Wait |
head -n <N> | 查看前 N 行 | Get-Content file.txt -TotalCount 10 |
Select-String -Pattern <p> | 搜索文件内容(类似 grep) | cat *.log | Select-String "ERROR" |
wc -l | 统计行数 | (Get-Content file.txt | Measure-Object -Line).Lines |
du -sh | 查看目录大小 | (Get-ChildItem -Recurse -Force | Measure-Object -Property Length -Sum).Sum / 1MB |
Compress-Archive | 压缩文件/目录 | Compress-Archive -Path ./project -DestinationPath ./project.zip |
Expand-Archive | 解压 zip 文件 | Expand-Archive -Path ./project.zip -DestinationPath ./output |
which | 查找命令路径 | (Get-Command node).Source |
open <path> | 在资源管理器中打开 | explorer . |
touch | 更新文件时间戳 | (Get-Item file.txt).LastWriteTime = Get-Date |
进程管理
| 命令 | 说明 | 常用示例 |
|---|
Get-Process | 列出所有进程 | Get-Process node |
Get-Process | Sort-Object CPU -Descending | 按 CPU 使用排序 | Select-Object -First 10 |
Stop-Process -Name <name> | 按名称终止进程 | Stop-Process -Name node |
Stop-Process -Id <pid> | 按 PID 终止进程 | Stop-Process -Id 1234 |
tasklist | 列出进程(CMD 兼容) | tasklist | findstr chrome |
taskkill /PID <pid> /F | 强制终止进程 | taskkill /PID 1234 /F |
Get-Process | Where-Object {$_.CPU -gt 100} | 过滤高 CPU 进程 | 自定义阈值 |
网络与端口
| 命令 | 说明 | 常用示例 |
|---|
Test-Connection <host> | Ping 测试 | Test-Connection google.com -Count 4 |
Test-NetConnection -Port <port> | 测试端口连通性 | Test-NetConnection localhost -Port 3000 |
Get-NetTCPConnection | 列出所有 TCP 连接 | Get-NetTCPConnection -State Listen |
Get-NetTCPConnection -LocalPort <port> | 查看指定端口 | Get-NetTCPConnection -LocalPort 8080 |
(Get-NetTCPConnection -LocalPort 8080).OwningProcess | 获取占用端口的进程 ID | 然后用 Get-Process -Id <pid> 查看 |
netstat -ano | findstr :<port> | 查看端口占用(CMD 兼容) | netstat -ano | findstr :3000 |
curl <url> 或 Invoke-WebRequest | HTTP 请求 | curl https://api.github.com |
Invoke-WebRequest -Uri <url> -OutFile <file> | 下载文件 | Invoke-WebRequest -Uri https://example.com/file.zip -OutFile ./file.zip |
环境变量与系统信息
| 命令 | 说明 | 常用示例 |
|---|
$env:<NAME> | 读取环境变量 | $env:PATH |
$env:<NAME> = "<value>" | 设置环境变量(仅当前会话) | $env:NODE_ENV = "production" |
[Environment]::GetEnvironmentVariable("<NAME>") | 读取持久环境变量 | [Environment]::GetEnvironmentVariable("PATH", "User") |
[Environment]::SetEnvironmentVariable("<NAME>", "<value>", "User") | 设置持久环境变量 | 需重启终端生效 |
Get-ComputerInfo | 查看系统信息 | Get-ComputerInfo | Select-Object WindowsProductName, OsVersion |
systeminfo | 系统信息(CMD 兼容) | systeminfo |
hostname | 显示计算机名 | hostname |
whoami | 显示当前用户 | whoami |
Get-Date | 获取当前日期时间 | Get-Date -Format "yyyy-MM-dd HH:mm:ss" |
管道与对象操作
| 命令 | 说明 | 常用示例 |
|---|
Where-Object {condition} | 过滤对象 | Get-Process | Where-Object {$_.CPU -gt 50} |
Select-Object <props> | 选择属性 | Get-Process | Select-Object Name, CPU |
Select-Object -First <N> | 取前 N 个 | Get-Process | Select-Object -First 5 |
Sort-Object <prop> | 排序 | Get-Process | Sort-Object CPU -Descending |
ForEach-Object {script} | 遍历处理 | 1..10 | ForEach-Object { $_ * 2 } |
Measure-Object | 统计(计数、求和、平均) | Get-Process | Measure-Object |
Group-Object <prop> | 分组 | Get-Process | Group-Object Name |
Tee-Object -FilePath <file> | 输出到屏幕同时写入文件 | Get-Process | Tee-Object -FilePath procs.txt |
Out-File <file> | 输出重定向到文件 | Get-Process > procs.txt |
Export-Csv <file> | 导出为 CSV | Get-Process | Export-Csv procs.csv |
常用技巧
| 场景 | 命令 | 说明 |
|---|
| 杀掉占用端口的进程 | Get-NetTCPConnection -LocalPort 8080 | ForEach-Object { Stop-Process -Id $_.OwningProcess -Force } | 一行搞定 |
| 批量重命名文件 | Get-ChildItem *.txt | Rename-Item -NewName { $_.Name -replace '.txt', '.md' } | 将 .txt 改为 .md |
| 递归查找文件 | Get-ChildItem -Recurse -Filter *.ts | 查找所有 .ts 文件 |
| 搜索文件内容 | Get-ChildItem -Recurse -Filter *.ts | Select-String "TODO" | 在所有 .ts 中搜索 TODO |
| 计算目录大小 MB | (Get-ChildItem -Recurse -Force | Measure-Object -Property Length -Sum).Sum / 1MB | 含隐藏文件 |
| 完整压缩(含隐藏文件) | Compress-Archive -Path (Get-ChildItem -Force) -DestinationPath archive.zip -CompressionLevel Optimal | 包含 .git 等 |
| 设置永久 PATH | [Environment]::SetEnvironmentVariable("PATH", $env:PATH + ";C:\tools", "User") | 添加到用户 PATH |
| 查看命令帮助 | Get-Help <cmd> -Full | 查看完整帮助 |
| 查看命令别名 | Get-Alias | 列出所有别名 |
| 执行外部命令 | & "C:\Program Files\app\app.exe" arg1 arg2 | 路径有空格时用 & |