Поскольку эта функция находится в вашем профиле, я думаю, что глобальная переменная области видимости, вероятно, является лучшим решением.Тем не менее, я просто хотел сообщить вам, что есть другой способ.
В других сценариях (непрофильные функции и т. Д.) Вы можете избегать глобальных переменных области действия, но при этом иметь функцию, изменяющую переменную, и вызывающая сторона имеет доступ к этому изменению.В этом случае вы можете создать ссылочную переменную и передать ее в свою функцию (т.е. передать по ссылке).
Вы должны создать массив $AddedPaths
типа [ref]
, а затем передать его в качестве параметра вашемуфункция (теперь с переменной ссылочного типа):
function AddPath($keys, [ref]$ActivePaths)
{
if ($keys.Count -eq 0) { return }
foreach ($key in $keys)
{
if ($AddablePaths.Contains($key))
{
if (!($ActivePaths.Value -contains $key))
{
$env:Path += $AddablePaths[$key]
$ActivePaths.Value += $key
}
}
else
{
Write-Host "Invalid path option. Options are:"
foreach ($key in $AddablePaths.keys) {
Write " $key"
}
}
}
}
> [ref]$AddedPaths = @()
> AddPath -keys ("ruby","git","notepad++") -ActivePaths $AddedPaths
> $AddedPaths
Value
-----
{ruby, git, notepad++}
Для получения дополнительной справки по ссылочным переменным:
> help about_ref