约 2231 字

约 11 分钟

#变量与作用域

#简介

变量用于在 PowerShell 会话中保存数据。与许多语言不同,PowerShell 的变量不需要预先声明类型,直接赋值即可创建。变量名以 $ 开头,并且大小写不敏感。

#变量赋值

使用等号 = 赋值:

> $name = "PowerShell"
> $version = 7
> $items = @("a", "b", "c")

读取变量时同样以 $ 开头:

> $name
PowerShell
> $version
7

由于变量名不区分大小写,$Name、$NAME 和 $name 指向同一个变量。

#自动变量

PowerShell 内置了一些由系统自动维护的变量:

变量说明
$_当前管道对象,是 $PSItem 的简写
$?上一条命令是否成功,值为 True 或 False
$LASTEXITCODE上一个外部程序或脚本的退出码
$PSVersionTable当前 PowerShell 版本及运行环境信息
$PWD当前工作目录
$HOME当前用户的主目录
$Error最近发生的错误集合
> $PSVersionTable.PSVersion
> Get-ChildItem
> $?
True

#作用域

作用域决定变量在哪些位置可见。PowerShell 支持以下作用域:

作用域说明
Global整个会话可见,通常是启动时的作用域
Script当前脚本文件内可见
Local当前作用域(函数或脚本块)内可见,也是默认作用域
Private仅在当前作用域可见,不向子作用域传递

在函数内给变量赋值时,默认创建的是 Local 变量:

> $x = "outer"
> function Test-Scope {
>>     $x = "inner"
>>     $x
>> }
> Test-Scope
inner
> $x
outer

使用 $script:、$global: 等前缀可以显式访问其他作用域:

$script:counter = 0
$global:appName = "Demo"

#变量管理命令

除了直接赋值,还可以使用 cmdlet 管理变量:

> New-Variable -Name "color" -Value "blue"
> Set-Variable -Name "color" -Value "red"
> Get-Variable -Name "color"
> Remove-Variable -Name "color"
  • New-Variable 创建变量。
  • Set-Variable 设置已有变量的值,不存在时也可以创建。
  • Remove-Variable 删除变量。

New-Variable 还可以通过 -Option 设置只读等属性:

> New-Variable -Name "pi" -Value 3.14 -Option ReadOnly

#环境变量

环境变量通过 $env: 前缀访问,它们由操作系统维护:

> $env:PATH
> $env:HOME

设置环境变量只影响当前进程及其子进程:

> $env:MY_VAR = "hello"
> $env:MY_VAR
hello

#推荐阅读

更新: 2026/11/2

作者: planc

创建: 2026/11/2