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

时间:2017-04-12 06:26:57

标签: powershell

根据主题,我试图获取特定邮箱的属性名称以及与该属性关联的值。

因此,下面的行为我提供了一个很好的可用对象属性列表,输出中显示的默认列的标题为“'名称'

Get-Mailbox -Identity "Person Name" | gm

然后我要说:

  1. 对象:"人名邮箱"
  2. "人名邮箱的属性"名称有' quota '
  3. 列出"人名邮箱"
  4. 的实际属性名称及其值

    我使用-ExpandProperty / Select-Object / Where-Object尝试过很多东西,但是他们都失败了。我确信这是非常基本的,但是Powershell绝对不是我的力量。谁能告诉我如何正确构建这个管道?

2 个答案:

答案 0 :(得分:1)

您似乎使用了正确的命令行开关。 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发布您的调查结果以及您尝试过的代码,那将是一个很好的帮助。

答案 1 :(得分:1)

您无需使用Where-Object,只需使用Select-Object

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