Powershell:创建新变量的函数不起作用

Powershell : Function to create new-variable not working

我正在尝试创建一个简单的函数来在 powershell 中使用生成的名称创建变量

我正在使用此代码:

    function createAnewVariable {
 [CmdletBinding()]
    Param(
          [String]$Name
    )
    New-Variable -Name GenLink$Name -Value "AMIGA" -Option AllScope
}

createAnewVariable -Name "AutoVAR"

在函数外部,当我执行 get-variable 时,它​​工作得很好,我可以看到我自动创建的变量,如 $GenLinkName 但在一个函数中,我无法访问列表中的变量,也无法调用它! oO

这可能很简单,但我不明白为什么:)

谁能告诉我哪里错了?

PowerShell are scoped 中的变量,默认为当前本地范围,即。函数体。 AllScope 选项不会使其对先前作用域可用,它只是确保 PowerShell 将变量复制 到从当前作用域创建的任何新子作用域中。

要使变量在父范围内可用,请在调用 New-Variable 时使用 -Scope 1:

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

请注意,如果 函数 是 module-scoped(例如,该函数是模块的一部分),父作用域将是模块作用域,这意味着所有同一模块中的其他函数也将能够看到它。