是否可以使Get-Variable
始终按照声明的顺序返回变量?
& {
$c = 2
$b = 1
$a = 0
get-variable -scope local
}
答案 0 :(得分:1)
如果为变量分配了scriptblocks(我的情况),原来有办法实现这个目的:
&{
$h_one = { "one" }
$h_two = { "two" }
$h_three = { "three" }
$h_four = { "four" }
$byStartLines= @{}
get-variable -name "h_*" -scope local | % { $byStartlines[($_.value.startposition.startline)] = $_ }
$order = ([int[]] $byStartLines.keys) | sort
$order | %{ $byStartLines[$_].name }
}
如果你在一行中声明了几个脚本块,情况会变得更复杂,但这是它的要点。
答案 1 :(得分:0)
我认为答案是否定的,但需要注意。
因为variable:name
条目中没有任何内容(通过dir variable:name
获取此内容),表明创建$name
的时间。
需要注意的是,自定义PSH主机可以通过在执行之前检查运行空间中的管道来做某事(但这可能需要编写自己的解析器,可能仍然无法处理invoke-expression
)。
(如果你解释为什么要这样做,可能会有更好的答案。)