Windows用户环境变量vs.系统环境变量



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

如果我做了-

SET TEMP

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

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

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

使用以下批处理文件:

@echo off
for /f "tokens=3 usebackq" %%a in (`reg query "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerEnvironment" ^| findstr TEMP`)  do @echo System variable TEMP = %%a
for /f "tokens=3 usebackq" %%a in (`reg query "HKEY_CURRENT_USEREnvironment" ^| findstr TEMP`)  do @echo Current user variable TEMP = %%a

从命令行使用%%替换为%

输出:

System variable TEMP = %SystemRoot%TEMP
Current user variable TEMP = %USERPROFILE%AppDataLocalTemp

注意,HKEY_CURRENT_USER优先(但由于某种原因,%USERPROFILE%在求%TEMP%时被扩展为一个短名称):

echo %USERPROFILE%
USERPROFILE=C:UsersDavidPostill
echo %TEMP%
C:UsersDAVIDP~1AppDataLocalTemp

最新更新