我们知道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
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!