Pat*_*ing 13 windows-7 powershell command-line environment-variables
一些重要的背景:我的公司有一个通用的登录 VBS 脚本,它在登录时修改用户 PATH 环境变量,并允许我运行依赖于映射 DFS 文件共享的软件。我最近还在我的 Windows 7 Enterprise 机器上安装了 Windows Powershell SDK,并尝试尝试从 Powershell 命令行修改我的 PATH 环境变量。
在此之后,我注意到我无法再运行与这些登录 PATH 修改相对应的应用程序,并且环境变量编辑器 PATH 设置为与我'echo %PATH%'从命令提示符发出时显示的不同。
所以例如(简化),从环境变量编辑器(My Computer properties -> Advanced System Settings -> Environment Variables)我有
C:\MyDir\; C:\MyOtherDir
Run Code Online (Sandbox Code Playgroud)
而当我'echo %PATH%'从命令提示符执行时,我得到:
C:\MyDir\
Run Code Online (Sandbox Code Playgroud)
有没有其他人遇到过类似的问题,是否有某种解决方案?当我用谷歌搜索帮助时,我发现了这个:
我突然想到,如果登录脚本是由我的 Explorer.exe 环境以外的其他东西启动的,那就是问题所在。但是,当我自己运行登录脚本时,命令提示符中的 PATH 没有改变。这与 PowerShell 有什么关系?我想念它是如何完全连接到该安装的。
Axe*_*per 12
Windows环境变量有系统环境变量和用户环境变量两类。如果您正在使用,echo %PATH%您将看到您的用户环境变量 PATH。只有当没有定义用户变量时,系统变量才会对用户进程有效。
该PATH分离器;不应该跟一个空白。
以下Microsoft 说明可能会有所帮助:
您可以通过编辑以下注册表项来修改用户环境变量:
HKEY_CURRENT_USER \
Environment
Run Code Online (Sandbox Code Playgroud)
您可以通过编辑以下注册表项来修改系统环境变量:
HKEY_LOCAL_MACHINE \
SYSTEM \
CurrentControlSet \
Control \
Session Manager \
Environment
Run Code Online (Sandbox Code Playgroud)
请注意,任何需要扩展的环境变量(例如,当您使用 时%SYSTEM%)都必须作为REG_EXPAND_SZ注册表值存储在注册表中。REG_SZ从注册表中读取时,不会扩展任何类型的值。
附加说明: 每当进程更改其环境(而不是为新进程定义环境的注册表设置)时,这些更改仅对子进程可见。
| 归档时间: |
|
| 查看次数: |
17574 次 |
| 最近记录: |