Windows user environment variable vs. system environment variable
12,438
Solution 1
In PowerShell, there's no cmdlet for it, but you can use the underlying .NET methods in the Environment class:
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")
Solution 2
Use the following batch file:
@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
To use from a command line replace %%
with %
.
Output:
System variable TEMP = %SystemRoot%\TEMP
Current user variable TEMP = %USERPROFILE%\AppData\Local\Temp
Note that the HKEY_CURRENT_USER
takes precedance (but for some reason %USERPROFILE%
is expanded to a shortname when evaluating %TEMP%
):
echo %USERPROFILE%
USERPROFILE=C:\Users\DavidPostill
echo %TEMP%
C:\Users\DAVIDP~1\AppData\Local\Temp
Author by
thinkster
Updated on June 11, 2022Comments
-
thinkster almost 2 years
In Windows, is there any shell/PowerShell command to list user environment variable and system environment variable separately?
If I do -
SET TEMP
Windows displays the user environment variable instead of system variable for
TEMP
.I am looking for a shell command/switch to display these variables separately.
-
Frode F. almost 9 yearsAnd to get a specific variable, use
[Environment]::GetEnvironmentVariable("TEMP", "Machine")
-
thinkster almost 9 yearsGot to learn something new from those scripts. Thanks, that's helpful.