gpt4 book ai didi

powershell - powershell-如何在单个选择对象上引用自定义表达式属性

转载 作者:行者123 更新时间:2023-12-03 00:06:56 37 4
gpt4 key购买 nike

您可以通过这个简单的示例脚本帮助我吗?
如何在单个“选择对象”上引用“自定义表达式属性”?

我想要:单个“选择对象”

Get-Process | Select-Object Id, 
    @{name="MyProp"; expression={$_.id}},
    @{name="MyPropRef"; expression={$_.MyProp}}

...但是未显示第三个属性“MyPropRef”!
   Id MyProp MyPropRef
-- ------ ---------
3780 3780

使用双选择对象管道传输时,显示“MyPropRef”
Get-Process | Select-Object Id, 
    @{name="MyProp"; expression={$_.id}} | Select-Object *,
    @{name="MyPropRef"; expression={$_.MyProp}}

Id MyProp MyPropRef
-- ------ ---------
3780 3780 3780

谢谢

最佳答案

Calculated properties仅对输入对象的原始属性进行操作,它们不能相互引用。

如果您需要基于先前计算的属性添加其他属性,则确实需要另一个(昂贵的)Select-Object调用。

您的命令:

Get-Process | Select-Object Id, 
@{name="MyProp"; expression={$_.id}},
@{name="MyPropRef"; expression={$_.MyProp}}

创建一个 .MyPropRef属性,但其值为 $null,因为 System.Diagnostics.Process输出自身的 Get-Process实例不具有 .MyPropRef属性。

如果您希望不重复执行一个 Select-Object调用,则可以预先在变量中定义计算属性中使用的脚本块,然后在计算属性定义中重复使用它们;例如。:
$myPropExpr = { $_.id }
Get-Process | Select-Object Id,
@{ name="MyProp"; expression=$myPropExpr },
@{ name="MyPropRef"; expression={ "!" + (& $myPropExpr) }}

这将产生类似以下内容:

Id   MyProp  MyPropRef
-- ------ ---------
3780 3780 !3780
...

关于powershell - powershell-如何在单个选择对象上引用自定义表达式属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59238279/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com