【问题标题】:PowerShell Equivilent to Select-Object "-ExpandProperty" for Where-Object To Query Nested ObjectsPowerShell 等效于选择对象“-ExpandProperty”,用于查询嵌套对象的 Where-Object
【发布时间】:2020-05-29 10:49:57
【问题描述】:

我有以下代码:

$results = Invoke-RestMethod -Uri "XXX" -Credential $cred 

$results.value | Where-Object releaseDefinition.name -eq "XYZ"

由于某种原因没有返回任何结果,当我对其运行等效的“Select-Obejct”查询时,问题变得清晰:

$results.value | Select-Object releaseDefinition.name

全部为空.. 谷歌说我需要使用 the "-ExpandProperty" tag to do this:

$results.value | Select-Object releaseDefinition -ExpandProperty name

所以我尝试对我的“Where-Object”语句做同样的事情:

$results.value | Where-Object releaseDefinition -ExpandProperty name -eq "XYZ"

而且是错误的...因为that property doesn't exist.所以我需要找到不同的方法来完成这个任务,我怎样才能在不使用这个参数的情况下完成上面的代码呢?还有为什么这个参数存在于select而不是where子句中?

【问题讨论】:

  • Select-Object cmdlet 选择一个对象或一组对象的指定 属性Where-Object cmdlet 从传递给它的对象集合中选择具有特定属性值的对象。我猜releaseDefinition 是一个嵌入式对象。请在问题中添加输入对象 ($Result | ConvertTo-Json) 的(样本)。

标签: powershell select where-clause


【解决方案1】:

我找到了一些解决方法,如果您将语句包装在括号中并引用基本元素($_),您可以访问对象任何级别的元素:

$results = Invoke-RestMethod -Uri "XXX" -Credential $cred 

$results.value | Where-Object { $_.releaseDefinition.name -eq "XYZ" }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-20
    • 1970-01-01
    • 2020-09-24
    相关资源
    最近更新 更多