【问题标题】:Select and Iterate over the Properties选择并迭代属性
【发布时间】:2019-09-12 07:54:15
【问题描述】:

我正在尝试从属性列表中读取内容,其中一个属性是对象。我需要使用什么来读取字符串和对象属性?

这是列表中Get-Member的输出

PS> $r |获取会员 名称 MemberType 定义 ---- ---------- ---------- Equals Method bool Equals(System.Object obj) GetHashCode 方法 int GetHashCode() GetType 方法类型 GetType() ToString 方法字符串 ToS​​tring() ActivityName 属性字符串 ActivityName {get;} DurationInMs 属性 System.Nullable[int] DurationInMs {get;} 错误属性 System.Object 错误 {get;} 输入属性 System.Object 输入 {get;} 输出属性 System.Object 输出 {get;} Status 属性字符串 Status {get;} PS> $r.输出 |获取会员 ... 名称属性字符串名称 {get;} 下一个属性 Newtonsoft.Json.Linq.JToken Next {get;} 路径属性字符串路径 {get;} 上一个属性 Newtonsoft.Json.Linq.JToken 上一个 {get;} 根属性 Newtonsoft.Json.Linq.JToken 根 {get;} ...

(这是一个很长的列表,隐藏了不必要的细节)

我正在尝试以表格格式选择 ActivityName、DurationInMs 和输出值。 Output 对象中的 Root 属性具有 dataRead、dataWritten 属性的值。

这是我尝试过的:

$r | Select ActivityName,DurationInMs

输出:

活动名称 DurationInMs ------------ ------------ 第 78 天 设置 TS 15 LKUP_FileControl 12206 复制路径 38585

我也试过这个:

$r.Output | select @{name="dataRead"; expression={$_.Root.dataRead.Value}},@{name="dataWritten"; expression={$_.Root.dataWritten.Value}}

输出:

数据读取数据写入 -------- ------------ 520114512 520114512 520114512 520114512 520114512 520114512 0 0 0 0 0 0 3199091788 3199091788 3199091788 3199091788 3199091788 3199091788

(注意:这会导致重复,因为 Root 属性内部还有其他嵌套属性)

我希望输出是表格格式,例如:

ActivityName DurationInMs dataRead dataWritten ------------ ------------ --------- ------------ 第 78 天 设置 TS 15 520114512 520114512 LKUP_FileControl 12206 0 0 复制路径 38585 3199091788 3199091788

如何在 PowerShell 中执行此操作?

【问题讨论】:

    标签: powershell


    【解决方案1】:

    结合你的两个代码 sn-ps 得到想要的结果:

    $r | Select-Object ActivityName, DurationInMs,
        @{n='dataRead';e={$_.Output.Root.dataRead.Value}},
        @{n='dataWritten';e={$_.Output.Root.dataWritten.Value}}
    

    【讨论】:

    • 谢谢@Ansgar。这就像一个魅力。有没有办法可以把它作为上述输出的一部分?请注意,这只存在于第二个数组中。 **$r[2].Output.value | Select-Object {$_.SRC_PATH.Value} ** ----------------- /computed /published/restricted_product /published/eim/managed/entpr_customer /published/internal /published/restricted_finance /published/restricted_distribution /published/eim/managed/entpr_product 这些是读取数据的路径,但不幸的是它与 dataRead 和 dataWritten 属性不在同一级别。
    • 我自己想出来的。再次感谢@Ansgar。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-29
    • 2012-02-01
    • 1970-01-01
    • 2011-10-25
    • 1970-01-01
    • 2012-04-27
    相关资源
    最近更新 更多