概述
PowerShell 变量语法为:$variable
或 ${variable}
。
变量类型是宽松的,非必要可不声明类型。类型声明形式为:[int]$number=42
。
变量名大小写不敏感,可包含空格和特殊字符。
当变量名包含空格或特殊字符时,需要用花括号将变量名包围,如:
${my var}
,甚至需要对特殊字符进行转义,${my`{var`}}
。鉴于难以使用,所以通常不会这样命名变量。
变量不必事先声明,默认值为 $null
。
可参考 这里。
变量类型可参考 这里。
常规操作
1 | # 创建变量 |
变量类型
PowerShell 变量分为 3 种:
- 用户创建的变量(user-created variable),由用户创建并维护。
- 自动变量(automatic variable),PowerShell 自行创建,存储自身状态。
- 偏好变量(preference variable),PowerShell 创建,存储用户偏好,可配置。
自动变量
PowerShell 中自动变量非常多,这里挑几个常用的说说。
$?
,记录上次操作成功与否(布尔值)。常用于判断操作是否出现异常。
$_
,等价于 $PSItem
,代表当前对象,通常用于管道、循环等中。
$PSItem
是 PowerShell 3.0 加入的,但$_
向后兼容且简洁仍被大量使用。
$args
,数组,包含所有未声明的参数。
$PSBoundParameters
,字典,包含所有声明参数的“键-值”对。
$Error
,数组,包含最近的异常。
注意,
$true
、$false
、$null
都是自动变量。
偏好变量
也有很多偏好变量,最常见看的应该是 $ErrorActionPreference
,它控制默认的非终端异常的行为。
作用域
PowerShell 作用域可以是具名的(绝对作用域)也可以数字化的(相对作用域) :
- 全局域(Global)
- 本地域(Local),可能是 global 作用域或其他任何作用域
- 脚本域(Script)
- 私有域(Private)
- 数字域(Number),Scope 0 代表当前作用域,向父级回溯一层数字加 1。
默认 PowerShell 解释器会自动处理和限制变量作用域。但也可以指定作用域修饰符,语法如下:
1 | $[<scope-modifier>:]<name> = <value> |
作用域修饰符同样适用于函数:
1 function [<scope-modifier>:]<name> {<function-body>}脚本默认作用域是脚本域,函数和别名的默认作用域是本地域。
参考
链接
MS Doc - About Automatic Variables