Windows用户环境变量与系统环境变量

时间:2015-06-05 20:39:48

标签: windows powershell cmd environment-variables

在Windows中,是否有任何shell / PowerShell命令分别列出用户环境变量和系统环境变量?

如果我这样做 -

SET TEMP

Windows为TEMP显示用户环境变量而不是系统变量。

我正在寻找一个shell命令/开关来分别显示这些变量。

2 个答案:

答案 0 :(得分:16)

在PowerShell中,没有cmdlet,但您可以在Environment类中使用基础.NET方法:

Write-Host "Machine environment variables"
[Environment]::GetEnvironmentVariables("Machine")

Write-Host "User environment variables"
[Environment]::GetEnvironmentVariables("User")

# This should be the same as 'Get-ChildItem env:', although it isn't sorted.
Write-Host "Process environment variables"
[Environment]::GetEnvironmentVariables("Process")

答案 1 :(得分:1)

使用以下批处理文件:

@echo off
for /f "tokens=3 usebackq" %%a in (`reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" ^| findstr TEMP`)  do @echo System variable TEMP = %%a
for /f "tokens=3 usebackq" %%a in (`reg query "HKEY_CURRENT_USER\Environment" ^| findstr TEMP`)  do @echo Current user variable TEMP = %%a

要从命令行使用,请将%%替换为%

输出:

System variable TEMP = %SystemRoot%\TEMP
Current user variable TEMP = %USERPROFILE%\AppData\Local\Temp

请注意,HKEY_CURRENT_USER采用了先验(但出于某种原因,%USERPROFILE%在评估%TEMP%时会扩展为短名称:

echo %USERPROFILE%
USERPROFILE=C:\Users\DavidPostill

echo %TEMP%
C:\Users\DAVIDP~1\AppData\Local\Temp