как сохранить значения параметров после функции powershell? - PullRequest
0 голосов
/ 21 марта 2012

У меня есть такой скрипт:

test.ps1

param (
    $name,
$age
)

function load-parameters()
{
$name = "Bob"
$age = "23"

Write-Host "name: " $name
Write-Host "age: " $age
}

load-parameters
Write-Host "name: " $name
Write-Host "age: " $age

За исключением имени и возраста, у меня есть около 10 параметров, которые я загружаю и инициализирую внутри load-параметры.

Проблема, которую я пытаюсь решить, - попытка сохранить значения инициализации (как я думаю,) глобальных функций области действия внутри скрипта.

Вышеприведенная функция возвращает:

name:  Bob
age:  23
name:
age:

Записаны ли локальные изменения при изменении их на функции?похоже, что реализация состоит в том, что параметры передаются путем копирования в функции, которые вы пишете внутри скрипта.

Я понимаю, что могу обойти это, передав переменные по ссылке (если в функциях powershell есть даже вещь)), но это было бы некрасиво, учитывая количество параметров, которые мне нужно передать.Есть ли способ указать область действия переменной, когда я делаю назначение внутри функции "load-parameters"?

1 Ответ

1 голос
/ 21 марта 2012

Не очень понятно, чего вы хотите достичь с помощью параметров нагрузки.То, что вы пытаетесь сделать, может быть решено с помощью значений по умолчанию для параметров вашего скрипта:

param (
    $name = "Bob",
    $age = "23"
)

Другой вариант, который вы пытаетесь сделать, это использовать переменные с областью действия скрипта:

$script:name = "Bob"

Так что в функциях вы можете сделать что-то вроде:

function load-parameters
{
$script:name = "Bob"
$script:age = "23"

Write-Host "name: " $name
Write-Host "age: " $age
}
...