PowerShell 变量与环境变量

在 Windows 系统管理和脚本开发中,PowerShell 环境变量是一个必须掌握的核心知识点。无论是配置开发环境、设置 PATH 路径,还是在自动化脚本中读取系统配置,PowerShell 环境变量都扮演着重要角色。本文将从基础到实战,全面讲解 PowerShell 环境变量的查看、设置、修改和删除操作,帮助你高效管理 Windows 环境配置。

一、PowerShell 环境变量常用命令速查

1️⃣ 常用命令速查

描述 命令
查看全部环境变量 Get-ChildItem Env: 或者 ls Env:
查看单个环境变量 $Env:PATH
判断是否存在 Test-Path Env:JAVA_HOME
临时设置(会话) $Env:MY_VAR = "value"
永久设置(用户) [Environment]::SetEnvironmentVariable("MY_VAR","value","User")
永久设置(系统) [Environment]::SetEnvironmentVariable("MY_VAR","value","Machine")
删除环境变量 SetEnvironmentVariable("MY_VAR",$null,"User")

普通变量 vs 环境变量对比

对比项 普通变量 环境变量
写法 $var $Env:VAR
作用范围 当前会话 进程 / 用户 / 系统
是否持久 可持久
典型用途 脚本逻辑 程序配置

二、PowerShell 普通变量基础知识

在 PowerShell 语法设计中,变量名必须以 $ 开头。$ 用于明确告诉解析器:这是一个变量引用。没有 $ 的标识符会被当作:命令名、字符串、参数或裸值(bare word)。

普通变量只在当前 PowerShell 会话中存在。

$var = "hello"
$var
Get-Variable
Remove-Variable var

关闭窗口即失效


三、PowerShell 环境变量基础操作

环境变量是操作系统级别的配置变量,PowerShell 环境变量通过 $Env: 前缀访问。与普通变量不同,环境变量可以持久化保存,影响整个系统或用户的程序运行环境。

查看 PowerShell 环境变量

Get-ChildItem Env:
$Env:PATH
$Env:TEMP

判断是否存在:

Test-Path Env:JAVA_HOME

Get-ChildItem(别名ls / dir / gci
用于列出某个路径下的子项,返回的是对象集合,不仅限于文件。

参数 含义
-Recurse 递归子目录
-File 只列文件
-Directory 只列文件夹
-Filter 快速过滤
-Hidden 显示隐藏项

Get-ChildItem不只是文件

Get-ChildItem Env:        # 环境变量
Get-ChildItem Variable:  # 变量
Get-ChildItem Alias:     # 别名
Get-ChildItem HKCU:\     # 注册表

创建与修改 PowerShell 环境变量

临时(当前会话)

$Env:MY_VAR = "test"

永久(推荐方式)

[Environment]::SetEnvironmentVariable("MY_VAR","test","User")

作用范围说明:

  • Process:当前进程
  • User:当前用户
  • Machine:全系统(需管理员)

修改 PATH 环境变量(实战示例)

$old = [Environment]::GetEnvironmentVariable("PATH","User")
$new = $old + ";C:\MyApp\bin"
[Environment]::SetEnvironmentVariable("PATH",$new,"User")

建议修改前先备份原 PATH


删除 PowerShell 环境变量

Remove-Item Env:MY_VAR
[Environment]::SetEnvironmentVariable("MY_VAR",$null,"User")

四、PowerShell 环境变量在脚本中的应用

$javaHome = $Env:JAVA_HOME

if (-not $Env:JAVA_HOME) {
    Write-Host "JAVA_HOME 未设置"
}

五、PowerShell 环境变量使用注意事项

在使用 PowerShell 环境变量时,请注意以下几点:

  • 修改系统变量需要管理员权限:设置 Machine 级别变量时需要以管理员身份运行 PowerShell
  • 新环境变量需重新打开程序才生效:已运行的程序不会自动获取新设置的环境变量
  • PATH 拼接注意分号 ;:追加路径时确保与前一个路径之间有分号分隔
  • 不建议在脚本中频繁改系统变量:可能导致不可预期的副作用

六、总结

PowerShell 环境变量是 Windows 系统管理的核心技能。通过本文,你已经掌握了:

  • 使用 $Env: 语法快速访问和临时设置环境变量
  • 使用 [Environment]::SetEnvironmentVariable() 方法永久设置环境变量
  • 使用 Get-ChildItem Env: 查看所有环境变量
  • 在脚本中正确读取和判断环境变量

掌握 PowerShell 环境变量操作,能够让你更高效地配置开发环境、编写自动化脚本和管理 Windows 系统。