我想要永久地将目录添加到%PATH%
大量 Windows 机器上的环境中。有没有办法从命令行 ( cmd
) 执行此操作,以便我可以编写解决方案脚本,而不必在数十台服务器上使用 GUI。
我该如何实现这一目标?
答案1
到目前为止,最简单的方法是使用setx
命令,包含在 Windows 7/Server 2008 及更高版本中,或作为Windows Server 2003 资源工具包适用于 XP 和 Server 2003 系统。
您可以使用setx
命令在变量中指定一组全新的目录%PATH%
,或者使用一些额外的逻辑附加一个值。假设我想将目录添加C:\stuff
到%PATH%
。我会按如下方式操作:
setx PATH“%PATH%,C:\stuff”/ M
这会将,C:\stuff
当前路径附加到当前路径,方法是用其当前值覆盖现有路径,后跟,C:\stuff
。路径环境变量以逗号分隔。/M
开关在 HKLM(系统范围)注册表配置单元中进行更改,而不是 HKCU(当前用户)注册表配置单元。
您可以将其放入登录/启动脚本中,或使用开关/s
指定远程服务器作为目标,然后从您的工作站进行更改。例如,下面的命令会将 stuff 目录添加到 myserver.mydomain.com 上的路径,其中包含用户的凭据mydomainadmin
。
setx /s myserver.mydomain.com /u mydomain\mydomainadmin /p mypassword PATH "%PATH%,C:\stuff" /M
通常的限定条件适用,主要是更改全局环境变量只会影响下次登录时的用户会话,并且只会在下次检查时应用于应用程序(通常是在启动时),因此最简单的方法就是重新启动服务器,但如果您具体知道哪些用户或服务需要更改,您可以采取较少破坏性的措施来应用更改。
答案2
到目前为止,最简单的方法是使用组策略首选项客户端扩展,(GPP)包含在 Windows 7/Server 2008 及更高版本中,或作为更新适用于 XP 和 Server 2003 系统。
您可以使用 GPP 设置在变量中指定一组全新的目录%PATH%
、“替换”,或使用“创建”附加一个值操作首选项。假设我想将目录添加C:\scripts
到%PATH%
。我会按如下方式操作:
这会附加C:\scripts
到当前%PATH%
。路径环境变量以分号分隔。使用 GPO 的计算机配置部分会在 HKLM(系统范围)注册表配置单元中进行更改,而不是 HKCU(当前用户)注册表配置单元。
您可以将其放入现有 GPO,或使用单独的 GPO 来定位特定工作站/用户。例如,下面的操作将脚本目录仅添加到计算机 ISC-JSCOTT 上的路径中。
适用通常的条件。更改系统环境变量只会在启动时生效,因此让此更改应用于所有内容的最简单方法是重新启动。
答案3
path 的帮助给出了答案。Y:>path /? 显示或设置可执行文件的搜索路径。
PATH [[驱动器:]路径[;...][;%PATH%] PATH ;
键入 PATH ; 可清除所有搜索路径设置并指示 cmd.exe 仅在当前目录中搜索。键入不带参数的 PATH 可显示当前路径。在新路径设置中包含 %PATH% 会导致将旧路径附加到新设置中。
要将 c:\stuff 添加到路径变量,请运行:
路径 c:\stuff;%path%