Как сохранить значения параметров после функции powershell?

У меня есть сценарий:

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 параметров, которые я загружаю и инициализирую внутри параметров нагрузки.

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

Возвращаемая функция возвращает:

name: Bob
age: 23
name:
age:

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

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

1 ответ

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

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
}

licensed under cc by-sa 3.0 with attribution.