调用函数时变量不更新

Ben*_*ley 5 powershell

我在我的个人资料脚本中有这个.

$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"
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

它的目的是让我能够轻松地将我需要的东西添加到我的路径中.例如,我可以打电话AddPath("ruby","git","notepad++")将这三件事添加到我的路径中.我希望它不添加项目,如果我已经添加它们,所以我创建了$AddedPaths数组以跟踪已经添加的内容.但是,当我调用该函数时它不会更新,因此仍然可以添加重复项.我究竟做错了什么?

Joe*_*ant 6

你需要这样做:

$Global:AddedPathes += $key
Run Code Online (Sandbox Code Playgroud)

这应该是你需要$Global:修改它的唯一地方.