PowerShell变量作用域深度解析
变量作用域层级
1 | # 全局作用域示例 |
作用域修饰符对比
修饰符 | 可见范围 | 生命周期 |
---|---|---|
Global | 所有作用域 | 会话结束 |
Local | 当前作用域 | 代码块结束 |
Script | 脚本文件内 | 脚本执行结束 |
Private | 当前作用域内部 | 代码块结束 |
最佳实践
- 避免过度使用全局变量
- 函数参数优先于外部变量引用
- 使用$script:访问脚本级变量
- 重要变量显式声明作用域
调试技巧
1 | # 查看当前作用域变量 |
1 | # 全局作用域示例 |
修饰符 | 可见范围 | 生命周期 |
---|---|---|
Global | 所有作用域 | 会话结束 |
Local | 当前作用域 | 代码块结束 |
Script | 脚本文件内 | 脚本执行结束 |
Private | 当前作用域内部 | 代码块结束 |
1 | # 查看当前作用域变量 |
1 | # 位置参数示例 |
1 | 1..5 | ForEach-Object { |
1 | # 数组初始化与索引 |
方法 | 数组适用 | 哈希表适用 | 时间复杂度 |
---|---|---|---|
Add() | × | ✓ | O(1) |
Remove() | × | ✓ | O(1) |
Contains() | ✓ | ✓ | O(n)/O(1) |
1 | # 固定大小数组修改错误 |
1 | # 基础过滤示例 |
1 | # 实时监控进程创建 |
1 | # 查看中间结果 |
1 | # 新建模块文件 |
组件 | 作用 | 存储位置 |
---|---|---|
.psm1文件 | 模块主体代码 | 模块目录 |
.psd1清单 | 元数据与依赖管理 | 模块目录 |
格式化文件 | 自定义对象显示规则 | Format目录 |
1 | # 未导出函数导致的访问错误 |
1 | # 全局作用域示例 |
1 | # 跨作用域访问 |
1 | # 多行字符串处理 |
1 | # 正则表达式分割 |
1 | # 基础try/catch结构 |
错误类型 | 触发条件 | 处理方式 |
---|---|---|
终止错误 | 严重运行时错误 | try/catch |
非终止错误 | 可继续执行错误 | -ErrorAction |
语法错误 | 脚本解析错误 | 预检查 |
1 | # 启用详细调试模式 |
1 | # 创建简单模块 |
1 | # 查看已加载模块 |
1 | # 基础异常捕获 |
属性 | 描述 |
---|---|
$_.Message | 错误描述信息 |
$_.FullyQualifiedErrorId | 错误唯一标识符 |
$_.Exception | 原始异常对象 |
1 | # 筛选特定错误类型 |
1 | # 抛出业务异常 |