我在配置文件脚本中有这个。函数调用时变量不更新
$AddablePaths = @{
"python3"=";C:\Python32";
"python2"=";C:\Python27";
"D"=";C:\D\dmd2\windows\bin";
"gcc"=";C:\MinGW\bin";
"verge"=";C:\Users\Cold\Dev\Verge\tools";
"ruby"=";C:\Ruby192\bin";
"git"=";C:\Program Files\Git\cmd";
"cmake"=";C:\Program Files\CMake 2.8\bin";
"emacs"=";C:\Users\Cold\Dev\emacs\bin";
"notepad++"=";C:\Program Files\Notepad++";
"boost-build"=";C:\Users\Cold\Dev\C++\boost-build\bin";
"svn"=";C:\Program FIles\SlikSvn\bin";
"gtk2"=";C:\Program Files\GTK2-Runtime\bin";
"qt"=";C:\Qt\bin";
"komodo"=";C:\Program Files\ActiveState Komodo Edit 6\";
"hg"=";C:\Program Files\TortoiseHg\"
}
$AddedPaths = @()
function AddPath($keys)
{
if ($keys.Count -eq 0) { return }
foreach ($key in $keys)
{
if ($AddablePaths.Contains($key))
{
if (!($AddedPaths -contains $key))
{
$env:Path += $AddablePaths[$key]
$AddedPaths += $key
}
}
else
{
Write-Host "Invalid path option. Options are:"
foreach ($key in $AddablePaths.keys) {
Write " $key"
}
}
}
}
它的目的是让我能够轻松地将我需要的东西添加到我的路径。例如,我可以拨打AddPath("ruby","git","notepad++")
将这三件事添加到我的路径中。我希望它不添加项目,如果我已经添加它们,所以我创建了$AddedPaths
数组以跟踪已添加的内容。但是,当我调用该函数时它不会更新,因此仍可以添加重复项。我究竟做错了什么?