これは私のプロファイルスクリプトにあります。関数が呼び出されたときに変数が更新されない
$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++")
と呼んで、これらの3つのものを自分のパスに追加することができます。すでに追加していれば項目を追加しないようにしたいので、すでに追加されている項目を追跡するために$AddedPaths
配列を作成しました。ただし、関数を呼び出すと更新されないので、重複は追加できます。私は間違って何をしていますか?