Windows:如何从命令行将程序添加到系统的路径环境变量中?

Hop*_*00b 6 windows command-line-interface environment-variables windows-command-prompt path

我希望将目录永久添加到%PATH%大量 Windows 机器上可用的环境中。有什么方法可以从命令行 ( cmd)执行此操作,以便我可以编写解决方案的脚本,而不必在数十台服务器上使用 GUI。

我怎样才能做到这一点?

Hop*_*00b 11

到目前为止,解决此问题的最简单方法是使用该setx命令,该命令包含在 Windows 7/Server 2008 及更高版本中,或作为适用于 XP 和 Server 2003 系统的Windows Server 2003 Resource Kit 的一部分。

您可以使用该setx命令在%PATH%变量中指定一组全新的目录,或者使用一些额外的逻辑附加一个值。假设我想将目录添加C:\stuff%PATH%. 我会这样做:

setx PATH "%PATH%,C:\stuff" /M

,C:\stuff通过用其当前值覆盖现有路径来附加到当前路径,后跟,C:\stuff. 路径环境变量以逗号分隔。该/M开关在 HKLM(系统范围)注册表配置单元中进行更改,而不是在 HKCU(当前用户)注册表配置单元中进行更改。

您可以将其放入登录/启动脚本中,或使用/s开关将远程服务器指定为目标,然后从您的工作站进行更改。例如,下面将使用mydomainadmin用户凭据将内容目录添加到 myserver.mydomain.com 上的路径中。

setx /s myserver.mydomain.com /u mydomain\mydomainadmin /p mypassword PATH "%PATH%,C:\stuff" /M
Run Code Online (Sandbox Code Playgroud)

通常的限定条件适用,主要是更改全局环境变量只会影响用户下次登录时的会话,并且只会在他们下次检查时应用到应用程序,通常是在启动时,因此最简单的方法是将其应用于所有内容是重新启动服务器,但如果您明确知道哪些用户或服务需要更改,则可以采取较少破坏性的措施来应用更改。

  • 使用此方法需要注意一些事项,因为路径以 REG_EXPAND_SZ 类型存储在注册表中,这意味着它可以包含对其他环境变量的引用。默认情况下,它仅使用固定的 SystemRoot,因此丢失引用无关紧要,但如果路径可能已被修改,则应在使用此方法之前检查其中是否没有环境变量引用。有一个名为 pathman.exe 的旧工具可能是一种替代方法。 (2认同)

jsc*_*ott 5

到目前为止,最简单的方法是使用组策略首选项客户端扩展(GPP),它包含在 Windows 7/Server 2008 及更高版本中,或者作为XP 和 Server 2003 系统更新的一部分。

您可以使用 GPP 设置在%PATH%变量“替换”中指定一组全新的目录,或者使用“创建”操作首选项附加值。假设我想将目录添加C:\scripts%PATH%. 我会这样做:

路径属性

GPO摘要

这会附加C:\scripts到当前的%PATH%. 路径环境变量以分号分隔。使用 GPO 的计算机配置部分可在 HKLM(系统范围)注册表配置单元中进行更改,而不是在 HKCU(当前用户)注册表配置单元中进行更改。

不知道为什么我使用 find,但它就在那里

您可以将其放入现有的 GPO 中,或者使用单独的 GPO 来定位特定的工作站/用户。例如,下面的代码仅将脚本目录添加到计算机 ISC-JSCOTT 上的路径中。

请使用组而不是用户或计算机进行过滤

通常的资格适用。更改系统环境变量只会在启动时生效,因此将其应用于所有内容的最简单方法是重新启动。