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(例如,该函数是模块的一部分),父作用域将是模块作用域,这意味着所有同一模块中的其他函数也将能够看到它。
我正在尝试创建一个简单的函数来在 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(例如,该函数是模块的一部分),父作用域将是模块作用域,这意味着所有同一模块中的其他函数也将能够看到它。