如何在powershell函数后保留参数值?

时间:2012-03-21 02:09:51

标签: function powershell powershell-v2.0 param

我有一个像这样的脚本:

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 个答案:

答案 0 :(得分: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
}