我经常开始输入azure命令,然后需要访问一个属性,最后输入像
这样的命令(($a|get-something).prop1|get-otherstuff).prop2
有没有一种优雅的方式(或黑客)写它更像像haskell,以避免必须跳到开头paranthesis的行的开头?我在考虑
$a | get-someArray $ [0] | get-details $ .prop2
对于.
- 可访问的属性,我到目前为止:
function $ {param([parameter(ValueFromPipeline)] $x, [parameter(Position=1)]$y)$x|Select-Object -ExpandProperty $y}
允许我执行expr |$ prop | expr |$ prop
而不是((expr).prop) | expr).prop
。
对于阵列访问,我们可以
function § {param([parameter(ValueFromPipeline)] $x, [parameter(Position=1)]$y)$x[$y]}
因此,我们可以做到这一点:arrayexpr |§ 0 |$ prop
你有更多的想法可以让我们在打字之前不去思考吗?
答案 0 :(得分:3)
我并不是很了解Haskell,但是
$a | Get-Something | % prop1 | Get-OtherStuff | % prop2
也许?
当然,它很容易破损,您可能仍需要括号来澄清哪些结果以何种方式分组。但ForEach-Object
是通过管道访问属性值的便捷方式,远远超过Select-Object -ExpandProperty
。