Powershell - 显示对象属性的值,其中属性名称类似于'* quota *'
按照主题,我试图获取属性的名称以及与该属性相关联的值邮箱。Powershell - 显示对象属性的值,其中属性名称类似于'* quota *'
所以,下面的命令得到我的可用对象属性的一个不错的名单,并在输出显示的默认列有标题“名称”
Get-Mailbox -Identity "Person Name" | gm
然后我想说的是这样的:
- 适合对象:“邮箱人名的”
- 凡“的人名邮箱”的属性具有类似名称“配额”
- 同时列出实际属性的名称和它的“人名的邮箱”
我已经尝试了一些使用-ExpandProperty /选择-对象/位置对象的事,但他们都失败的价值。我确信这是非常基本的,但Powershell绝对不是我的优势。任何人都可以告诉我如何正确构造这条管道?
你并不需要使用Where-Object
,仅Select-Object
:
Get-Mailbox -Identity "Person Name" | Select-Object -Property *quota*
你似乎已经使用了正确的commandlets。 Where-Object
过滤器。 Select-Object
选择特定的属性。
根据我的经验,有时您在控制台上看到的内容与实际属性名称不匹配,因为有格式化程序甚至可以更改列名称。如果您使用该虚拟属性名称驱动Where-Object
和Select-Object
,那么它们确实失败。有时候,输出并不是真正的记录集,可以很好地与这些cmdlet配合使用。
我的建议是,当事情变得奇怪时,总是检查对象的类型。从$items=Get-Mailbox -Identity "Person Name"
开始。 然后$items.GetType()
显示实际的.net类型。 然后$items.Count
揭示它是否实际上是一个数组或单个对象。 然后$items|ForEach-Object {$_.GetType()}
显示每个对象的类型。
此外$items|Get-Member
是很有帮助弄清楚属性名称。如有必要,也可以在循环中使用它。
这就是我如何解决奇怪的行为,如果你可以发布你的发现和你试过的代码Where-Object
和Select-Object
这将是一个很大的帮助。
谢谢你的指导亚历克斯,不胜感激。幸运的是,下面的Moshe Perez已经钉住了它(我可以添加一些优雅的东西)。在技术和计算方面,这一课与以往一样,在彻底审查世界末日/幻想理论之前,彻底检查基础知识! 虽然如此,您的建议非常好,我感谢您对结构化方法的反馈,以便我自己解决这些问题。干杯。 – Chris
不客气 –
哇,真是太简单了,谢谢! 我有这个可怕的怀疑,我也过于复杂。我仍然努力争取到PowerShell的'对象'管道和其他shell的'文本'管道,比如Bash等。 – Chris