Json Powershell-从嵌套对象获取多个值

Json Powershell-从嵌套对象获取多个值,json,git,rest,powershell,tfs,Json,Git,Rest,Powershell,Tfs,我确信这是一个非常基本的PowerShell问题,但我有一个JSON文件,我正在使用ConvertFrom JSON将其加载到PowerShell自定义对象中,下面的select object可以工作 $JsonContent.value | Select-Object -Property Name, @{Name = 'commit'; Expression = { $_.commit.author.date }} 我正在尝试在嵌套提交对象中获取另一列,但以下内容不起作用,因此我希望有人能帮

我确信这是一个非常基本的PowerShell问题,但我有一个JSON文件,我正在使用
ConvertFrom JSON
将其加载到PowerShell自定义对象中,下面的
select object
可以工作

$JsonContent.value | Select-Object -Property Name, @{Name = 'commit'; Expression = { $_.commit.author.date }}
我正在尝试在嵌套提交对象中获取另一列,但以下内容不起作用,因此我希望有人能帮助我了解如何从嵌套提交对象中获取第二个值(我尝试了一些变体,但不起作用)

谢谢


Scott

表达式=…后面的部分是一个包含代码的脚本块,因此,如果要返回一个值数组作为属性的值,只需修改

Expression = { $_.commit.author.date}, {$_.commit.commitId}  

因此,您可以使用commma运算符创建并返回2元素数组


可能您更想制作一些表示提交的漂亮字符串,例如

Expression = { "{0} - {1}" -f $_.commit.author.date, $_.commit.commitId }

如果您想将
commitId
放在一个完全不同的列中,只需添加另一个这样的属性即可

... -Property Name, @{Name = 'commit'; Expression = { $_.commit.author.date}}, @{Name = 'commitId'; Expression = {$_.commit.commitId}} 

我以前确实让它工作过,但它会像您在一个包含两个值的单列数组中所说的那样返回它。我的原始select中的两列有name和commit。有没有办法把它放到自己的列中,这样我就可以有一个name、commit和commitID列?例如,在select对象中是否可能有另一个名称/表达式?谢谢,这非常有效-不确定我怎么会错过这个变化,因为我尝试了这么多相关的问题-如何在日期上使用where子句?我尝试了这个| where对象($\ commit.author.date-lt“2016-08-10”)的一些变体。此外,如何迭代这个对象?我可以进行foreach操作吗?如何访问每列数据?您可以像往常一样使用
Where Object
,但请注意,本例中的日期是一个字符串,因此您可能首先要将其转换为
datetime
。关于如何动态访问对象的所有属性,您可能想了解一下
Get Member
,您能否为where object和Get Member提供一些关于如何使用它们的帮助/示例?
Expression = { "{0} - {1}" -f $_.commit.author.date, $_.commit.commitId }
... -Property Name, @{Name = 'commit'; Expression = { $_.commit.author.date}}, @{Name = 'commitId'; Expression = {$_.commit.commitId}}