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

时间:2015-08-14 21:59:17

标签: windows powershell windows-server-2008-r2 windows-server-2012

我目前遇到问题,我正在尝试使用此链接(http://blogs.technet.com/b/heyscriptingguy/archive/2011/07/23/use-powershell-to-modify-your-environmental-path.aspx)中提供的教程通过powershell更新系统路径变量,但不幸的是,它和&# #39; ll有时不会做任何事情,因为该值已经在当前用户的路径中。有没有办法忽略当前用户的路径,只设置一个系统?

$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

1 个答案:

答案 0 :(得分:0)

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

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