在PowerShell中,我如何通过其嵌套属性键/值对象过滤对象?

问题描述 投票:1回答:1

从get-log命令返回的对象可能看起来像

Date: <date>
Properties: 
        statusCode     : OK
        serviceRequestId: 97168d7a-4c92-4d65-b509-65785b14ef42
Name: <name>
Details: <details>

我想通过做类似的事情来做一些返回一个对象的事情

get-log | where-object { $_.Properties.serviceRequestId -eq '97168d7a-4c92-4d65-b509-65785b14ef42' }

当然,这不起作用,但我想要一些像这样的东西。

我的目标是查看“详细信息”属性。

powershell filtering
1个回答
1
投票

您提供的过滤示例按原样工作:

get-log | where-object { $_.Properties.serviceRequestId -eq '97168d7a-4c92-4d65-b509-65785b14ef42' }

这将返回您想要的对象(完整对象,而不仅仅是内部属性)。

因此,您可以使用其结果来获取任何其他属性,例如Details

$result = get-log | where-object { $_.Properties.serviceRequestId -eq '97168d7a-4c92-4d65-b509-65785b14ef42' }
$result.Details

或者你可以通过继续管道并使用Select-Object在一行中完成所有操作:

get-log | 
    where-object { 
        $_.Properties.serviceRequestId -eq '97168d7a-4c92-4d65-b509-65785b14ef42' 
    } |
    Select-Object -ExpandProperty Details

(为了更好的可读性,它在多行上做了)

© www.soinside.com 2019 - 2024. All rights reserved.