在 Powershell v2.0 中有没有更短的方法?
& { $a = 1 ; & { $a = 2 ; & { get-variable -name a -scope 2 } } }
...比如说,这个?:
& { $a = 1 ; & { $a = 2 ; & { $2:a } } }
答案 0 :(得分:2)
我不相信确定范围的捷径 - 它似乎只能通过使用-scope
参数来访问。但是,函数可以封装工作:
function Get-ScopedVariable([string]$name, [int]$scope) {
Get-Variable -name $name -scope ($scope + 1) # add one for the extra-scope of this function
}
您的示例将缩短为:
& { $a = 1 ; & { $a = 2 ; & { Get-ScopedVariable a 2 } } }
然后可以对该函数进行别名以进一步缩短它。
答案 1 :(得分:2)
有许多默认别名,其中一个恰好是gv
的{{1}}:
Get-Variable
此外,您不需要显式提供gv -Name a -Scope 2
参数,因为它被推断为第一个参数:
-Name
并且您不需要写出完整的参数名称并且可以缩短它(只要它仍然是明确的):
gv a -Scope 2
请注意,您不应该在要分发的脚本中执行此操作,但对于命令行上的快速操作,这当然是有效的。