如何设置环境路径变量忽略当前用户的路径变量

How to set the Environment path variable ignoring the current user's path variable

我目前遇到一个问题,我们正在尝试使用 link (http://blogs.technet.com/b/heyscriptingguy/archive/2011/07/23/use-powershell-to-modify-your-environmental-path.aspx) 中的教程通过 powershell 更新系统路径变量,但不幸的是,它由于该值已经在当前用户的路径中,因此有时不会执行任何操作。有什么办法可以忽略当前用户的路径,只设置系统路径吗?

$AddedFolder = 'C:\Directory'

$OldPath=(Get-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment' -Name PATH).Path

IF ($ENV:PATH | Select-String -SimpleMatch $AddedFolder)
{
    Return ‘Folder already within $ENV:PATH'
}

$NewPath=$OldPath.Trim(";")+’;’+$AddedFolder

Set-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment' -Name PATH –Value $NewPath

然后检查 $OldPath 而不是 $env:Path。我还建议在分号处拆分值并检查 $AddedFolder 是否包含在该数组中,否则如果子文件夹已在 PATH 中列出,您可能会得到误报。

if ($OldPath.Split(';') -contains $AddedFolder) {
    Return 'Folder already within $ENV:PATH'
}