PowerShell 变量与环境变量

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")

2️⃣ 普通变量 vs 环境变量

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

二、PowerShell 普通变量(简述)

在 PowerShell 语法设计中,变量名必须以 $ 开头
$ 用于明确告诉解析器:这是一个变量引用
没有 $ 的标识符会被当作:

  • 命令名
  • 字符串
  • 参数
  • 裸值(bare word)

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

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

关闭窗口即失效


三、环境变量基础操作

1. 查看环境变量

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:\     # 注册表

2. 创建 / 修改环境变量

临时(当前会话)

$Env:MY_VAR = "test"

永久(推荐方式)

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

作用范围说明:

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

3. 修改 PATH(示例)

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

建议修改前先备份原 PATH


4. 删除环境变量

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

四、脚本中的常见用法

$javaHome = $Env:JAVA_HOME

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

五、注意事项(精简版)

  • 修改系统变量需要管理员权限
  • 新环境变量需重新打开程序才生效
  • PATH 拼接注意分号 ;
  • 不建议在脚本中频繁改系统变量