Windows PowerShell 是 Windows 系统中非常重要的命令行环境和自动化脚本工具。它既可以像传统命令提示符一样操作文件、目录和程序,也可以通过对象、管道和脚本对系统进行更精细的管理。
一、PowerShell 的基本特点
PowerShell 常用命令大多采用“动词-名词”的形式,例如:
Start-Service其中:
• Get 通常表示获取信息
• Set 通常表示设置内容
• New 通常表示新建对象
• Copy 通常表示复制对象
• Move 通常表示移动对象
• Remove 通常表示删除对象
• Start 通常表示启动
• Stop 通常表示停止
这种命名方式比传统命令更长,但语义更清楚,也更适合脚本自动化。
二、查看帮助与查找命令
1、查看命令帮助
Get-Help 命令名例如:
Get-Help Get-ChildItem如果希望查看更完整的帮助信息,可以使用:
Get-Help Get-ChildItem -Full查看示例:
Get-Help Get-ChildItem -Examples查看某个参数说明:
Get-Help Get-ChildItem -Parameter Recurse这是学习 PowerShell 最重要的命令之一。遇到不熟悉的命令时,不必立即上网搜索,先用 Get-Help 查看语法、参数和示例。
2、查找可用命令
Get-Command查找包含某个关键词的命令:
Get-Command *Process*查找某个动词开头的命令:
Get-Command Get-*查找某个模块中的命令:
Get-Command -Module Microsoft.PowerShell.ManagementGet-Command 适合回答“当前系统里有哪些命令可以用”。
3、查看对象有哪些属性和方法
Get-Process | Get-MemberGet-Member 用来查看管道中对象的类型、属性和方法。
例如,Get-Process 返回的是进程对象。通过 Get-Member 可以知道进程对象包含 Name、Id、CPU、WorkingSet 等属性。后续筛选、排序和格式化都可以围绕这些属性进行。
三、目录与路径操作
1、查看当前位置
Get-Location常用别名:
pwd该命令用于显示当前所在目录。
2、切换目录
Set-Location 路径例如:
Set-Location C:\Users常用别名:
cd C:\Users返回上一级目录:
cd ..切换到用户目录:
cd $HOME3、列出当前目录内容
Get-ChildItem常用别名:
gci列出指定目录内容:
Get-ChildItem C:\Windows列出隐藏文件:
Get-ChildItem -Force递归列出子目录内容:
Get-ChildItem -Recurse只列出文件:
Get-ChildItem -File只列出文件夹:
Get-ChildItem -Directory4、查看路径是否存在
Test-Path 路径例如:
Test-Path C:\Users如果路径存在,返回 True;如果不存在,返回 False。
四、文件与文件夹操作
1、新建文件夹
New-Item -ItemType Directory -Path 文件夹名例如:
New-Item -ItemType Directory -Path logs2、新建文件
New-Item -ItemType File -Path 文件名例如:
New-Item -ItemType File -Path app.log3、复制文件
Copy-Item 源路径 目标路径例如:
Copy-Item .\app.log .\backup\app.log复制整个文件夹:
Copy-Item .\src .\backup\src -Recurse4、移动文件
Move-Item 源路径 目标路径例如:
Move-Item .\app.log .\logs\app.log移动命令也常用于重命名文件。
5、重命名文件
Rename-Item 原文件名 新文件名例如:
Rename-Item app.log server.log6、删除文件
Remove-Item 文件名例如:
Remove-Item app.log删除文件夹及其内容:
Remove-Item .\logs -Recurse强制删除:
Remove-Item .\logs -Recurse -ForceRemove-Item -Recurse -Force 风险较高。执行前应先确认路径是否正确,避免误删重要文件。
7、批量删除指定类型文件
Get-ChildItem -Recurse -Filter *.log | Remove-Item这个命令会递归查找当前目录下所有 .log 文件,并通过管道传给 Remove-Item 删除。
更谨慎的做法是先查看匹配结果:
Get-ChildItem -Recurse -Filter *.log确认无误后再执行删除。
五、读取与写入文本内容
1、查看文本文件内容
Get-Content 文件名常用别名:
type 文件名例如:
Get-Content .\app.log2、查看前几行
Get-Content .\app.log -TotalCount 10这表示查看文件前 10 行。
3、持续查看日志变化
Get-Content .\app.log -Wait这个命令适合查看不断写入的日志文件。
4、写入文本内容
Set-Content 文件名 "文本内容"例如:
Set-Content .\hello.txt "Hello PowerShell"注意:Set-Content 会覆盖原有内容。
5、追加文本内容
Add-Content 文件名 "追加内容"例如:
Add-Content .\hello.txt "New line"Add-Content 会在文件末尾追加内容,不会覆盖原文件。
6、把命令输出保存到文件
Get-Process | Out-File process.txt也可以使用重定向:
Get-Process > process.txt追加输出:
Get-Process >> process.txt六、管道、筛选与排序
PowerShell 的管道符是:|,它可以把前一个命令的输出传给后一个命令。
1、筛选对象
Get-Process | Where-Object {$_.CPU -gt 10}其中:$_ 表示当前管道中的对象。-gt 表示 greater than,即大于。
这个命令表示筛选 CPU 使用时间大于 10 的进程。
常见比较运算符包括:
• -eq 等于
• -ne 不等于
• -gt 大于
• -ge 大于等于
• -lt 小于
• -le 小于等于
• -like 通配符匹配
• -match 正则匹配
2、选择对象属性
Get-Process | Select-Object Name, Id, CPU这表示只显示进程的名称、进程 ID 和 CPU 属性。
只显示前 5 个结果:
Get-Process | Select-Object -First 5只显示最后 5 个结果:
Get-Process | Select-Object -Last 53、排序对象
Get-Process | Sort-Object CPU按 CPU 从高到低排序:
Get-Process | Sort-Object CPU -Descending4、格式化输出
表格格式:
Get-Process | Format-Table Name, Id, CPU列表格式:
Get-Process | Format-List Name, Id, CPU需要注意:Format-Table 和 Format-List 主要用于显示结果,不适合作为管道中间步骤继续处理数据。
七、进程管理命令
1、查看进程
Get-Process查看指定进程:
Get-Process notepad2、启动程序
Start-Process notepad打开某个文件:
Start-Process .\readme.txt打开网页:
Start-Process "https://www.microsoft.com"或者:
Start-Process "msedge.exe" -ArgumentList "https://www.microsoft.com"3、停止进程
Stop-Process -Name notepad根据进程 ID 停止进程:
Stop-Process -Id 1234强制停止:
Stop-Process -Name notepad -Force停止进程要谨慎,尤其不要随意停止系统关键进程。
4、查找占用资源较高的进程
Get-Process | Sort-Object CPU -Descending | Select-Object -First 10 Name, Id, CPU这个命令可以查看 CPU 使用时间较高的前 10 个进程。
八、服务管理命令
1、查看系统服务
Get-Service查看指定服务:
Get-Service wuauserv2、筛选正在运行的服务
Get-Service | Where-Object {$_.Status -eq "Running"}筛选已停止的服务:
Get-Service | Where-Object {$_.Status -eq "Stopped"}3、启动服务
Start-Service 服务名例如:
Start-Service wuauserv4、停止服务
Stop-Service 服务名例如:
Stop-Service wuauserv某些服务需要管理员权限才能启动或停止。对系统服务操作前,应确认服务用途,避免影响系统正常运行。
5、重启服务
Restart-Service 服务名Restart-Service spooler九、网络检查命令
1、测试网络连通性
Test-Connection 地址例如:
Test-Connection www.baidu.com这类似于传统的 ping 命令。
2、测试端口是否可连接
Test-NetConnection 地址 -Port 端口号例如:
Test-NetConnection www.example.com -Port 443这适合检查某个服务器端口是否可访问。
3、查看 IP 配置
Get-NetIPConfiguration该命令可以查看网卡、IP 地址、网关、DNS 等信息。
4、查看网络连接
Get-NetTCPConnection筛选某个端口:
Get-NetTCPConnection -LocalPort 80十、系统信息命令
1、查看计算机基本信息
Get-ComputerInfo这个命令会输出大量系统信息,包括操作系统、版本、硬件、BIOS、内存等。
2、查看操作系统信息
Get-CimInstance Win32_OperatingSystem3、查看处理器信息
Get-CimInstance Win32_Processor4、查看内存信息
Get-CimInstance Win32_PhysicalMemory5、查看磁盘信息
Get-Volume查看物理磁盘:
Get-Disk查看分区:
Get-Partition这些命令适合系统检查、运维巡检和故障排查。
十一、环境变量命令
1、查看所有环境变量
Get-ChildItem Env:PowerShell 中的环境变量可以通过 Env: 驱动器访问。
2、查看指定环境变量
$env:PATH查看用户目录:
$env:USERPROFILE查看当前用户名:
$env:USERNAME3、临时设置环境变量
$env:NODE_ENV = "development"这种方式只对当前 PowerShell 会话有效。关闭终端后,设置会失效。
4、删除当前会话中的环境变量
Remove-Item Env:NODE_ENV如果要永久设置环境变量,通常需要使用系统设置界面,或使用专门命令写入用户级、系统级环境变量。
十二、压缩与解压缩命令
1、压缩文件夹
Compress-Archive -Path .\src -DestinationPath .\src.zip2、压缩多个文件
Compress-Archive -Path .\a.txt, .\b.txt -DestinationPath .\files.zip3、解压缩文件
Expand-Archive -Path .\src.zip -DestinationPath .\output4、覆盖解压
Expand-Archive -Path .\src.zip -DestinationPath .\output -Force压缩命令适合备份文件、打包日志、传输项目资料等场景。
十三、执行脚本
PowerShell 脚本文件通常以 .ps1 结尾。
1、运行当前目录下的脚本
.\script.ps1注意,当前目录下的脚本通常需要写成 .\script.ps1,不能只写 script.ps1。
这是因为 PowerShell 默认不会自动从当前目录查找可执行脚本,从而减少误执行风险。
2、查看当前执行策略
Get-ExecutionPolicy查看所有作用域的执行策略:
Get-ExecutionPolicy -List3、设置当前用户执行策略
Set-ExecutionPolicy RemoteSigned -Scope CurrentUserRemoteSigned 通常表示:本地创建的脚本可以运行,从网络下载的脚本需要可信签名。
执行策略是 PowerShell 的安全机制之一,但它不是完整的安全沙箱。不要运行来源不明的脚本。
4、临时绕过执行策略运行脚本
powershell -ExecutionPolicy Bypass -File .\script.ps1这类命令应谨慎使用,只适合明确知道脚本来源和内容的情况。
十四、别名与命令习惯
PowerShell 为了兼容用户习惯,提供了许多别名。
常见别名包括:
• cd Set-Location
• pwd Get-Location
• dir Get-ChildItem
• ls Get-ChildItem
• cat Get-Content
• type Get-Content
• copy Copy-Item
• move Move-Item
• del Remove-Item
• rm Remove-Item
• cls Clear-Host
查看某个别名对应的真实命令:
Get-Alias ls查看所有别名:
Get-Alias在交互式操作中,使用 ls、cd、cat 很方便。但在正式脚本中,更建议使用完整命令名,例如 Get-ChildItem、Set-Location、Get-Content。完整命令虽然更长,但可读性更好,也更不容易产生歧义。
十五、常见完整操作流程
1、查找并删除日志文件
先查看:
Get-ChildItem -Recurse -Filter *.log确认后删除:
Get-ChildItem -Recurse -Filter *.log | Remove-Item更谨慎地模拟执行:
Get-ChildItem -Recurse -Filter *.log | Remove-Item -WhatIf-WhatIf 可以预览命令将要执行的操作,适合删除、移动、修改系统资源前使用。
2、查看占用资源较高的进程
Select-Object -First 10 Name, Id, CPU这条命令体现了 PowerShell 管道的典型用法:获取进程,按 CPU 排序,选出前 10 个,并只显示关键字段。
3、查看正在运行的服务
Select-Object Name, DisplayName, Status4、把系统信息导出为文件
Get-ComputerInfo | Out-File .\computer-info.txt5、检查某个端口是否可访问
Test-NetConnection 127.0.0.1 -Port 3000这在前端、后端和本地服务开发中非常常用。例如检查本地 3000 端口服务是否正在监听。
十六、容易出错的地方
1、不要误删路径
执行删除命令前,尤其是使用 -Recurse 和 -Force 时,应先检查路径:
Get-ChildItem 路径必要时先使用:
Remove-Item 路径 -WhatIf确认无误后再真正执行。
2、不要把格式化命令放在管道中间
例如:
Get-Process | Format-Table | Where-Object {$_.Name -like "node*"}这种写法通常不合适,因为 Format-Table 会把对象转换为用于显示的格式化对象,不再适合继续筛选。
更好的写法是:
Format-Table Name, Id, CPU筛选、排序、选择应放在前面,格式化输出应放在最后。
3、不要盲目运行网上复制的脚本
PowerShell 可以操作文件、服务、注册表、网络和系统配置。来源不明的脚本可能造成数据删除、配置篡改或安全风险。
运行脚本前应先查看内容:
Get-Content .\script.ps14、注意管理员权限
有些命令需要管理员权限,例如修改系统服务、写入系统目录、调整执行策略、修改系统级配置等。
如果命令提示权限不足,可以尝试以管理员身份打开 PowerShell,但不要在不理解命令作用的情况下使用管理员权限执行脚本。
5、注意 PowerShell 与 CMD 命令差异
PowerShell 可以运行许多传统 CMD 命令,但两者语法并不完全相同。
例如,PowerShell 中变量使用 $,路径可以通过对象处理,管道传递的是对象,而不是单纯文本。
因此,在 PowerShell 中编写脚本时,最好优先使用 PowerShell 原生命令。
小结
Windows PowerShell 的核心价值不只是执行单个命令,而是用对象、管道和脚本把多个操作组合成自动化流程。掌握目录操作、文件处理、文本读写、管道筛选、进程服务管理、网络检查和脚本执行后,就可以完成大多数 Windows 日常管理与开发辅助任务。
“点赞有美意,赞赏是鼓励”
热门跟贴