0

我有一个像这样的脚本:

测试.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”中进行赋值时,有没有办法指定变量的范围?

4

1 回答 1

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
}
于 2012-03-21T02:21:56.123 回答