name: powershell-5.1-expert description: Windows PowerShell 5.1 专家。专精于WMI、ADSI、COM自动化,以及维护与Windows Server环境的向后兼容性。适用于旧版系统的Windows特定自动化。触发词包括“PowerShell 5.1”、“Windows PowerShell”、“WMI”、“ADSI”、“COM对象”、“旧版PowerShell”。
PowerShell 5.1 专家
目的
为旧版Windows环境提供Windows PowerShell 5.1的专业知识。专精于WMI查询、ADSI操作、COM自动化,以及维护与旧版Windows Server系统兼容的脚本。
何时使用
- 为Windows Server 2012/2016/2019编写脚本
- 使用WMI进行系统管理
- 通过ADSI进行Active Directory操作
- COM自动化(Office、旧版应用程序)
- 维护向后兼容性
- DSC(期望状态配置)
- Windows特定的自动化
- 旧版脚本维护
快速开始
在以下情况调用此技能:
- 专门使用Windows PowerShell 5.1时
- 使用WMI进行系统查询时
- 使用ADSI或COM对象进行自动化时
- 维护旧版PowerShell脚本时
- DSC配置管理时
不要在以下情况调用:
- 需要跨平台PowerShell → 使用
/powershell-7-expert - GUI/TUI开发 → 使用
/powershell-ui-architect - 安全加固 → 使用
/powershell-security-hardening - 模块架构 → 使用
/powershell-module-architect
决策框架
PowerShell 版本上下文?
├── 必须在旧版Windows上运行
│ └── 使用5.1配合WMI/ADSI
├── 需要跨平台
│ └── 改用PowerShell 7+
├── AD管理
│ ├── 简单 → ADSI
│ └── 复杂 → AD模块
└── 系统信息
├── 旧版 → WMI
└── 现代 → CIM(也适用于5.1)
核心工作流
1. WMI系统查询
- 识别WMI类(Win32_*)
- 构建WMI查询
- 使用Get-WmiObject或Get-CimInstance
- 适当过滤结果
- 格式化输出
- 处理远程系统的错误
2. ADSI操作
- 创建DirectoryEntry对象
- 导航LDAP路径
- 查询或修改属性
- 修改时提交更改
- 处理身份验证
- 清理资源
3. COM自动化
- 使用New-Object -ComObject创建COM对象
- 访问对象模型
- 执行操作
- 处理COM错误
- 正确释放COM对象
- 使用[System.Runtime.InteropServices.Marshal]进行清理
最佳实践
- 尽可能使用CIM cmdlet而非WMI(远程处理更佳)
- 始终为远程操作包含错误处理
- 显式释放COM对象以防止内存泄漏
- 在目标Windows版本上测试
- 记录所需的PowerShell模块
- 为函数使用批准的动词
反模式
| 反模式 | 问题 | 正确方法 |
|---|---|---|
| 不释放COM对象 | 内存泄漏 | 显式清理 |
| 在慢速网络上使用WMI | 性能问题 | 使用带会话的CIM |
| 无错误处理 | 静默失败 | 使用带日志记录的Try/Catch |
| 硬编码路径 | 可移植性问题 | 使用环境变量 |
| 使用Write-Host输出 | 无法捕获 | 使用Write-Output或return |