PowerShell 作为 Windows 系统更强大的命令行工具,相比 CMD 能实现更复杂的自动化操作 —— 它以 “对象” 为核心,兼容 CMD 所有命令,却能完成 CMD 做不到的高级任务(如批量处理数据、远程管理)。以下是从入门到进阶的 100 个常用 PowerShell 命令,按功能分类,附详细用途,适合系统管理员、开发者及进阶用户。

一、先搞懂:PowerShell 与 CMD 的核心区别
- 本质差异:CMD 返回 “文本”,而 PowerShell 返回 “结构化对象”(可直接提取属性,如从进程信息中单独筛选 “内存占用”);
- 兼容性:PowerShell 可直接运行所有 CMD 命令(如
dir、ipconfig),但 PowerShell 的专属命令(如Get-Process)无法在 CMD 中执行; - 优势:支持管道操作(将一个命令的输出作为另一个命令的输入)、脚本自动化、跨平台(PowerShell 7 + 支持 Windows/Linux/macOS)。
二、3 种方式打开 PowerShell
- 快速启动:
Win+R打开运行框,输入PowerShell回车,打开默认权限窗口;

- 管理员权限:在开始菜单搜索 “PowerShell”,右键 “以管理员身份运行”(执行系统级命令时需此权限);

- 文件夹内打开:在任意文件夹地址栏输入
PowerShell回车,直接定位到当前路径(类似 CMD 的 “在指定目录打开”)。

三、100 个常用 PowerShell 命令(分类详解)
1. 系统与进程管理(11 个)
Get-Process:获取所有运行进程(含 ID、内存占用、启动时间等);Stop-Process:终止指定进程(支持按进程名、ID 或对象操作,如Stop-Process -Name "notepad"关闭所有记事本);Start-Process:启动新进程(可指定参数,如Start-Process "chrome.exe" -ArgumentList "https://www.baidu.com"打开百度);Get-Service:查看系统服务状态(运行中 / 已停止,如Get-Service -Name "wuauserv"查看 Windows 更新服务);Start-Service/Stop-Service/Restart-Service:启动 / 停止 / 重启指定服务;Set-Service:修改服务属性(如Set-Service -Name "wuauserv" -StartupType "Automatic"设为自动启动);Get-ComputerInfo:获取完整系统信息(操作系统版本、BIOS 版本、硬件配置等);Restart-Computer:重启本地或远程计算机(需权限,如Restart-Computer -ComputerName "Server01"远程重启服务器)。
2. 网络与连接(6 个)
Test-Connection:类似ping,但返回对象(含响应时间、TTL 值,如Test-Connection "baidu.com" -Count 4测试 4 次连接);Get-NetAdapter:获取网络适配器详情(名称、MAC 地址、状态、IP 配置等);Resolve-DnsName:解析 DNS 记录(如Resolve-DnsName "baidu.com"查看域名对应的 IP);New-NetFirewallRule:创建防火墙规则(如New-NetFirewallRule -DisplayName "Allow-SSH" -Direction Inbound -LocalPort 22 -Protocol TCP -Action Allow允许 SSH 连接);Get-NetTCPConnection:查看所有活动 TCP 连接(含本地 / 远程 IP、端口、状态)。
3. 文件与数据处理(10 个)
Get-Content:读取文件内容(如Get-Content "D:\test.txt"读取文本,支持按行读取);Set-Content/Add-Content:覆盖写入 / 追加内容到文件(如"Hello" | Set-Content "test.txt"写入文本,"World" | Add-Content "test.txt"追加);Get-FileHash:计算文件哈希值(验证文件完整性,如Get-FileHash "setup.exe" -Algorithm SHA256生成 SHA256 值);Export-Csv/Import-Csv:导出 / 导入 CSV 文件(如Get-Process | Export-Csv "processes.csv"将进程信息存为表格);ConvertTo-Json/ConvertFrom-Json:对象与 JSON 互转(如Get-Service | ConvertTo-Json将服务信息转为 JSON 字符串);Export-Clixml/Import-Clixml:序列化 / 反序列化对象(保存复杂数据结构,如Get-Process | Export-Clixml "processes.xml")。
4. 模块与包管理(7 个)
Install-Module:从 PowerShell Gallery 安装模块(需先执行Set-PSRepository -Name "PSGallery" -InstallationPolicy Trusted信任仓库);Import-Module:加载模块到当前会话(如Import-Module ActiveDirectory加载 AD 管理模块);Get-Module:查看已加载的模块;Update-Module:更新已安装的模块;Find-Module:搜索在线模块(如Find-Module -Name "PSScriptAnalyzer"查找脚本分析工具);Install-Package/Get-Package:安装 / 查看软件包(支持 MSI、EXE 等格式)。
5. 安全管理(6 个)
Get-ExecutionPolicy:查看脚本执行策略(默认禁止运行未签名脚本);Set-ExecutionPolicy:修改策略(如Set-ExecutionPolicy RemoteSigned允许运行本地脚本);Get-Credential:弹出对话框获取用户名和密码(用于需要身份验证的操作);ConvertTo-SecureString:将明文转换为加密字符串(如"password" | ConvertTo-SecureString -AsPlainText -Force);Get-Acl/Set-Acl:查看 / 修改文件 / 注册表的权限(访问控制列表)。
6. 远程管理(5 个)
Enter-PSSession:进入远程计算机的交互式会话(如Enter-PSSession -ComputerName "Server01"远程登录服务器);Invoke-Command:在远程计算机执行命令(如Invoke-Command -ComputerName "Server01" -ScriptBlock {Get-Process}获取远程进程);New-PSSession:创建持久化远程会话(多次操作无需重复验证);Enable-PSRemoting:配置计算机接收远程命令(需管理员权限);Test-WSMan:检查 WinRM 服务是否正常(远程管理依赖此服务)。
7. 对象处理与管道(7 个)
Where-Object:筛选对象(如Get-Process | Where-Object {$_.MemoryUsage -gt 100MB}筛选内存占用超 100MB 的进程);Select-Object:选择对象属性(如Get-Process | Select-Object Name, Id, MemoryUsage只显示名称、ID 和内存);Sort-Object:按属性排序(如Get-Process | Sort-Object MemoryUsage -Descending按内存降序排列);Group-Object:按属性分组(如Get-Process | Group-Object -Property "Name"按进程名分组);Measure-Object:计算统计值(如Get-Process | Measure-Object -Property "MemoryUsage" -Average -Sum计算内存平均值和总和);ForEach-Object:遍历对象执行操作(如Get-ChildItem *.txt | ForEach-Object {Rename-Item $_ -NewName "$($_.Name).bak"}批量重命名 TXT 文件)。
8. 注册表与证书(6 个)
Get-ItemProperty/Set-ItemProperty:读取 / 修改注册表键值(如Get-ItemProperty "HKLM:\Software\Microsoft\Windows");New-Item:创建注册表项或文件目录;Get-ChildItem:列出注册表项或目录内容(支持递归,如Get-ChildItem "HKLM:\Software" -Recurse);Get-Certificate:查看证书信息(如Get-Certificate -StoreLocation "Cert:\CurrentUser\My"查看当前用户证书);New-SelfSignedCertificate:创建自签名证书(用于测试或内部服务)。
9. 日志事件(4 个)
Get-EventLog:读取系统事件日志(如Get-EventLog -LogName "System" -EntryType "Error"查看系统错误日志);Clear-EventLog:清空指定日志;Write-EventLog:写入自定义事件到日志;Get-WinEvent:高级日志查询(支持筛选、排序,比Get-EventLog功能更强)。
10. WMI/CIM 管理(3 个)
Get-WmiObject:查询 WMI 信息(旧版,兼容性高,如Get-WmiObject -Class Win32_OperatingSystem获取操作系统信息);Get-CimInstance:查询 CIM 信息(新版,跨平台,替代Get-WmiObject);Invoke-CimMethod:调用 CIM 类方法(如远程重启服务)。
11. 作业与后台任务(5 个)
Start-Job:在后台启动任务(不阻塞当前会话,如Start-Job -ScriptBlock {Get-ChildItem D:\ -Recurse}后台遍历 D 盘文件);Get-Job:查看后台任务状态;Receive-Job:获取任务结果;Wait-Job:等待任务完成;Stop-Job:终止后台任务。
12. 字符串与文本(5 个)
Select-String:文本搜索(支持正则,如Get-Content "test.txt" | Select-String "error"查找含 “error” 的行);Format-Table/Format-List:将对象输出为表格 / 列表(控制显示格式);ConvertTo-Html:将对象转为 HTML 表格(如Get-Process | ConvertTo-Html > "processes.html"生成网页报告)。
13. 调试与错误处理(6 个)
Set-PSBreakpoint:在脚本中设置断点(调试时暂停执行);Write-Debug/Write-Verbose:输出调试 / 详细日志(需开启对应参数);Write-Warning/Write-Error:输出警告 / 错误信息;Try/Catch/Finally:结构化错误处理(捕获异常并处理,避免脚本中断)。
14. 变量与作用域(5 个)
Get-Variable/Set-Variable:查看 / 创建修改变量;Remove-Variable/Clear-Variable:删除变量 / 清空变量值。
15. 其他实用命令(10 个)
Get-PSDrive:查看所有 PS 驱动器(含磁盘、注册表、证书等虚拟驱动器);Get-History:查看当前会话的命令历史;Start-Transcript/Stop-Transcript:记录会话所有输出到文件(用于审计或复盘);Get-Alias:查看命令别名(如Get-Alias发现ls是Get-ChildItem的别名);Get-Help:查看命令帮助(如Get-Help Get-Process -Full获取完整文档);Update-Help:下载最新帮助文档。
四、PowerShell 核心优势:为什么值得学?
- 对象导向:命令输出为结构化对象,可直接提取属性(如
Get-Process | Select-Object Name, Id),无需解析文本; - 跨平台支持:PowerShell 7 + 可在 Windows、Linux、macOS 上运行,适合多系统管理;
- 深度集成:直接调用.NET 框架、COM 组件、REST API,扩展性极强;
- 自动化神器:结合脚本和任务计划,可实现批量部署、日志分析、故障自动修复等复杂操作。
总结
PowerShell 的 100 个命令覆盖了系统管理、网络操作、文件处理、安全控制等场景,其核心优势在于 “对象处理” 和 “自动化能力”。对于 IT 管理员,用它能批量管理服务器、自动生成报告;对于开发者,可快速处理数据、调试脚本。从基础的
Get-Process到进阶的远程管理命令,建议从日常场景练起(如用Get-Content读取日志、Test-Connection诊断网络),逐步掌握管道和脚本编写,解锁 PowerShell 的强大功能。正文完
请使用微信扫一扫(自愿无偿打赏-乞讨)
发表至: 疑难杂症
2025年7月14日


