Windows 用户环境变量与系统环境变量
Windows user environment variable vs. system environment variable
Windows中有没有shell/PowerShell命令分别列出用户环境变量和系统环境变量?
如果我这样做 -
SET TEMP
Windows 显示用户环境变量而不是 TEMP
的系统变量。
我正在寻找 shell command/switch 来分别显示这些变量。
在 PowerShell 中,没有适用于它的 cmdlet,但您可以在环境中使用底层 .NET 方法 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")
使用以下批处理文件:
@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
Windows中有没有shell/PowerShell命令分别列出用户环境变量和系统环境变量?
如果我这样做 -
SET TEMP
Windows 显示用户环境变量而不是 TEMP
的系统变量。
我正在寻找 shell command/switch 来分别显示这些变量。
在 PowerShell 中,没有适用于它的 cmdlet,但您可以在环境中使用底层 .NET 方法 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")
使用以下批处理文件:
@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