Powershell - 显示对象属性的值,其中属性名称类似于'* quota *'

Powershell - 显示对象属性的值,其中属性名称类似于'* quota *'

问题描述:

按照主题,我试图获取属性的名称以及与该属性相关联的值邮箱。Powershell - 显示对象属性的值,其中属性名称类似于'* quota *'

所以,下面的命令得到我的可用对象属性的一个不错的名单,并在输出显示的默认列有标题“名称”

Get-Mailbox -Identity "Person Name" | gm 

然后我想说的是这样的:

  1. 适合对象:“邮箱人名的”
  2. 凡“的人名邮箱”的属性具有类似名称“配额
  3. 同时列出实际属性的名称和它的“人名的邮箱”

我已经尝试了一些使用-ExpandProperty /选择-对象/位置对象的事,但他们都失败的价值。我确信这是非常基本的,但Powershell绝对不是我的优势。任何人都可以告诉我如何正确构造这条管道?

你并不需要使用Where-Object,仅Select-Object

Get-Mailbox -Identity "Person Name" | Select-Object -Property *quota* 
+0

哇,真是太简单了,谢谢! 我有这个可怕的怀疑,我也过于复杂。我仍然努力争取到PowerShell的'对象'管道和其他shell的'文本'管道,比如Bash等。 – Chris

你似乎已经使用了正确的commandlets。 Where-Object过滤器。 Select-Object选择特定的属性。

根据我的经验,有时您在控制台上看到的内容与实际属性名称不匹配,因为有格式化程序甚至可以更改列名称。如果您使用该虚拟属性名称驱动Where-ObjectSelect-Object,那么它们确实失败。有时候,输出并不是真正的记录集,可以很好地与这些cmdlet配合使用。

我的建议是,当事情变得奇怪时,总是检查对象的类型。从$items=Get-Mailbox -Identity "Person Name"开始。 然后$items.GetType()显示实际的.net类型。 然后$items.Count揭示它是否实际上是一个数组或单个对象。 然后$items|ForEach-Object {$_.GetType()}显示每个对象的类型。

此外$items|Get-Member是很有帮助弄清楚属性名称。如有必要,也可以在循环中使用它。

这就是我如何解决奇怪的行为,如果你可以发布你的发现和你试过的代码Where-ObjectSelect-Object这将是一个很大的帮助。

+0

谢谢你的指导亚历克斯,不胜感激。幸运的是,下面的Moshe Perez已经钉住了它(我可以添加一些优雅的东西)。在技​​术和计算方面,这一课与以往一样,在彻底审查世界末日/幻想理论之前,彻底检查基础知识! 虽然如此,您的建议非常好,我感谢您对结构化方法的反馈,以便我自己解决这些问题。干杯。 – Chris

+0

不客气 –