PowerShell 跨作用域更改变量


我们知道PowerShell中的变量和其它编程语言一样有作用域的限制。PowerShell中一般情况低作用域对高作用域的变量只有读权限,没有写权限。详情可参加:

Powershell变量的作用域:https://www.pstips.net/powershell-scope-of-variables.html

但是一些特殊的场景中需要跨作用域更改变量,这就是本文的主题了。先看看这段脚本:

function func-2
{
    func-3
}
function func-3
{
    $capital="西安"
}
function func-1
{
 $capital="北京"
 func-2
 $capital
}
func-1

Func-1中定义了变量$capital,然后func-1 调用func-2, func-2调用func-3,在func-3中尝试更改变量$capital,最后输出:北京。迁都失败。
接下来对func-3进行思想改造,让func-3学会走后门:

function func-3
{
    $capital = Get-Variable -Scope 2 -Name capital
    $capital.Value='西安'
}

此时运行脚本,输出结果为:西安。迁都完毕!

本文链接: https://www.pstips.net/modify-variable-cross-scope.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!

关于 Mooser Lee

我是一个Powershell的爱好者,创建了PowerShell中文博客,热衷于Powershell技术的搜集和分享。本站部分内容来源于互联网,不足之处敬请谅解,并欢迎您批评指正。

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注