PowerShell Cmdlet 完全入门(最核心、最实用的那一部分)
1. 什么是 Cmdlet?(读作 “command-let”)
- Cmdlet 是 PowerShell 的最小执行单位 = 编译好的 .NET 类
- 所有官方命令都是 Cmdlet,第三方模块也都是 Cmdlet
- 名字永远是:动词-名词 形式,而且大小写敏感但不区分(推荐 PascalCase)
2. 标准动词(背会这 12 个,99% 的命令你都能猜出来)
| 动词 | 含义 | 常见例子 |
|---|---|---|
| Get | 获取、读取 | Get-Process、Get-Service、Get-Item |
| Set | 设置、修改 | Set-Date、Set-Location、Set-Acl |
| New | 创建 | New-Item、New-ADUser、New-Object |
| Remove | 删除 | Remove-Item、Remove-Variable |
| Start / Stop | 启动 / 停止 | Start-Service、Stop-Process |
| Restart | 重启 | Restart-Computer、Restart-Service |
| Test | 测试是否存在 | Test-Path、Test-Connection |
| ConvertTo | 转换成某种格式 | ConvertTo-Json、ConvertTo-Html |
| Export / Import | 导出 / 导入 | Export-Csv、Import-Module |
| Out | 输出到某处 | Out-File、Out-GridView、Out-Printer |
| Add | 添加 | Add-Content、Add-LocalGroupMember |
| Where / Select | 过滤、选择 | Where-Object、Select-Object |
3. 每个 Cmdlet 都有的“公共参数”(记住这 8 个就够了)
-WhatIf # 先预览,不真执行(神器!)
-Confirm # 每次弹出确认(高危操作必加)
-Verbose # 显示详细过程
-Debug # 显示调试信息
-ErrorAction Stop # 出错立刻终止脚本
-ErrorAction SilentlyContinue # 出错忽略继续
-WarningAction # 控制警告行为
-Force # 强制执行(跳过提示、覆盖等)
实战例子(强烈建议每次都加 -WhatIf 先试):
Remove-Item C:\重要文件夹\* -Recurse -WhatIf # 先看会删什么
Restart-Computer -Force -Confirm:$false # 直接重启,不弹窗
4. 参数类型最常见的三种写法(90% 场景)
| 写法 | 说明 | 示例 |
|---|---|---|
| 位置参数 | 靠顺序,不写参数名 | Stop-Process 1234 |
| 命名参数 | 最常用,明确写参数名 | Stop-Process -Id 1234 |
| 开关参数 | 布尔型,出现就是 $true | Remove-Item -Recurse -Force |
5. 学会“自助查参数” —— 永远不用背
# 方法1:完整参数(最推荐)
Get-Help Get-Process -Full
# 方法2:只看参数
Get-Help Get-Process -Parameter *
# 方法3:只看例子(最快学会用法)
Get-Help Get-Process -Examples
# 方法4:直接敲命令 + Tab(实时补全)
Stop-Process -<Tab><Tab> # 会自动列出所有参数
6. 10 个最常用、最值得死记的 Cmdlet(每天用 50 次以上)
| 排名 | Cmdlet | 别名 | 一句话说明 |
|---|---|---|---|
| 1 | Get-ChildItem | dir, ls | 列文件、文件夹 |
| 2 | Get-Process | ps | 查看进程 |
| 3 | Get-Service | – | 查看服务 |
| 4 | Where-Object | ?, where | 过滤 |
| 5 | Select-Object | select | 选列、取前几条 |
| 6 | Get-Command | gcm | 搜索命令(救命!) |
| 7 | Get-Help | help | 查看帮助 |
| 8 | Get-Member | gm | 查看对象有什么属性和方法 |
| 9 | Export-Csv | – | 导出完美 CSV(报表神器) |
| 10 | Invoke-Command | icm | 远程执行(批量管 100 台电脑) |
7. 30 秒体验 Cmdlet 的“组合拳”(复制粘贴)
# 找出内存占用前 10 的进程,并导出 CSV
Get-Process |
Where-Object {$_.WS -gt 50MB} |
Sort-Object WS -Descending |
Select-Object -First 10 Name, ID, @{Name="内存MB";Expression={$_.WS/1MB -as [int]}} |
Export-Csv "$env:USERPROFILE\Desktop\内存大户.csv" -NoTypeInformation -Encoding UTF8
你只需要认识上面表格里的 6 个 Cmdlet,就能写出这行代码!
现在你已经完全掌握 Cmdlet 的基础了。
下一步你想:
- 看“高级参数绑定和管道输入”?
- 还是直接学“自己写一个 Cmdlet”(10 行代码就能写)?
- 或者我给你一份“100 个最常用 Cmdlet 速查表 PDF”?
随时说,我继续带你冲!