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

时间:2017-12-23 17:36:34

标签: powershell filtering

从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' }

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

我的目标是看到&#34;详情&#34;属性。

1 个答案:

答案 0 :(得分: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

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