在 powershell 脚本中引用默认路径
Reference default path in powershell script
如果当前终端中的路径已经改变,有没有办法调用系统路径?即:
$env:Path = "C:\some new path"
#some coding that requires a different path set up
$env:Path = $defaultPath #would have to define $defaultPath by calling the system default path
它仍然存储在注册表中,因此您可以查询它:
- 位于:
HKLM:\System\CurrentControlSet\Control\Session Manager\Environment
$key = "HKCU:\Environment",
"HKLM:\System\CurrentControlSet\Control\Session Manager\Environment"
(Get-ItemPropertyValue -Path $key -Name Path) -Join ';'
使用 Get-ItemPropertyValue
查询密钥( 如 Mklement 所建议)将为您提供 属性' s 值.
使用以下命令从注册表重新加载 $env:PATH
环境变量,因为 未来 会话会看到它(假设没有进行进一步的相关注册表更新)。
如果您当前的会话没有进行任何相关的注册表更新,这与获取在会话启动时生效的值相同 - 除非通过 $PROFILE
script:[=24= 进行任何动态添加]
$env:PATH = [Environment]::GetEnvironmentVariable('Path', 'Machine'),
[Environment]::GetEnvironmentVariable('Path', 'User') -join ';'
注:
进程的有效$env:PATH
值是machine-level[=53=的复合值] 和 user-level 注册表项,machine-level 定义优先,如上面两个 .NET API 调用所示。
请注意,基础注册表位置 - HKEY_LOCAL_MACHIN\System\CurrentControlSet\Control\Session Manager\Environment
和 HKEY_CURRENT_USER\Environment
- 是 REG_EXPAND_SZ
注册表值,即它们可以根据 other 环境变量,例如%SystemRoot%
和%ProgramFiles%
.
上面的 .NET API 调用 - 使用 [Environment]::GetEnvironmentVariable()
- and PowerShell's Get-ItemProperty
and Get-ItemPropertyValue
cmdlet expand(插入)此类引用和 return 逐字 路径 - 这也是新进程默认看到的路径。
鉴于上述情况,稳健地检索在会话启动时生效的值的唯一方法是将其保存在启动时的变量。
如果当前终端中的路径已经改变,有没有办法调用系统路径?即:
$env:Path = "C:\some new path"
#some coding that requires a different path set up
$env:Path = $defaultPath #would have to define $defaultPath by calling the system default path
它仍然存储在注册表中,因此您可以查询它:
- 位于:
HKLM:\System\CurrentControlSet\Control\Session Manager\Environment
$key = "HKCU:\Environment",
"HKLM:\System\CurrentControlSet\Control\Session Manager\Environment"
(Get-ItemPropertyValue -Path $key -Name Path) -Join ';'
使用 Get-ItemPropertyValue
查询密钥( 如 Mklement 所建议)将为您提供 属性' s 值.
使用以下命令从注册表重新加载 $env:PATH
环境变量,因为 未来 会话会看到它(假设没有进行进一步的相关注册表更新)。
如果您当前的会话没有进行任何相关的注册表更新,这与获取在会话启动时生效的值相同 - 除非通过 $PROFILE
script:[=24= 进行任何动态添加]
$env:PATH = [Environment]::GetEnvironmentVariable('Path', 'Machine'),
[Environment]::GetEnvironmentVariable('Path', 'User') -join ';'
注:
进程的有效
$env:PATH
值是machine-level[=53=的复合值] 和 user-level 注册表项,machine-level 定义优先,如上面两个 .NET API 调用所示。请注意,基础注册表位置 -
HKEY_LOCAL_MACHIN\System\CurrentControlSet\Control\Session Manager\Environment
和HKEY_CURRENT_USER\Environment
- 是REG_EXPAND_SZ
注册表值,即它们可以根据 other 环境变量,例如%SystemRoot%
和%ProgramFiles%
.上面的 .NET API 调用 - 使用
[Environment]::GetEnvironmentVariable()
- and PowerShell'sGet-ItemProperty
andGet-ItemPropertyValue
cmdlet expand(插入)此类引用和 return 逐字 路径 - 这也是新进程默认看到的路径。
鉴于上述情况,稳健地检索在会话启动时生效的值的唯一方法是将其保存在启动时的变量。