Ami*_*200 4 variables powershell function
我正在尝试创建一个简单的函数来在 powershell 中使用生成的名称创建变量
我正在使用这段代码:
function createAnewVariable {
[CmdletBinding()]
Param(
[String]$Name
)
New-Variable -Name GenLink$Name -Value "AMIGA" -Option AllScope
}
createAnewVariable -Name "AutoVAR"
Run Code Online (Sandbox Code Playgroud)
在函数外部,当我执行 get-variable 时,它工作得很好,我可以看到自动创建的变量,例如 $GenLinkName,但在函数内部,我无权访问列表中的变量,并且无法调用它!oO
这可能很简单,但我不明白为什么:)
有人可以告诉我我错在哪里吗?
PowerShell 中的变量是有作用域的,默认为当前本地作用域,即。函数体。该AllScope选项不会使其可用于先前的作用域,它只是确保 PowerShell将变量复制到从当前作用域创建的任何新子作用域中。
要使变量在父作用域中可用,请-Scope 1在调用时使用New-Variable:
function createAnewVariable {
[CmdletBinding()]
Param(
[String]$Name
)
New-Variable -Name "GenLink$Name" -Value "AMIGA" -Scope 1
}
createAnewVariable -Name "AutoVAR"
# This is now available in the calling scope
$GenLinkAutoVAR
Run Code Online (Sandbox Code Playgroud)
请注意,如果函数是模块作用域的(例如,函数是模块的一部分),则父作用域将是模块作用域,这意味着同一模块中的所有其他函数也将能够看到它。