是否有缩写形式来获取带编号范围的变量值?

时间:2010-03-27 23:42:08

标签: powershell scope

Powershell v2.0 中有没有更短的方法?

& { $a = 1 ; & { $a = 2 ; & { get-variable -name a -scope 2 } } }

...比如说,这个?:

& { $a = 1 ; & { $a = 2 ; & { $2:a } } }

2 个答案:

答案 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

请注意,您不应该在要分发的脚本中执行此操作,但对于命令行上的快速操作,这当然是有效的。