如何设置环境路径变量忽略当前用户的路径变量
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'
}
我目前遇到一个问题,我们正在尝试使用 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'
}