根据主题,我试图获取特定邮箱的属性名称以及与该属性关联的值。
因此,下面的行为我提供了一个很好的可用对象属性列表,输出中显示的默认列的标题为“'名称'
Get-Mailbox -Identity "Person Name" | gm
然后我要说:
我使用-ExpandProperty / Select-Object / Where-Object尝试过很多东西,但是他们都失败了。我确信这是非常基本的,但是Powershell绝对不是我的力量。谁能告诉我如何正确构建这个管道?
答案 0 :(得分:1)
您似乎使用了正确的命令行开关。 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
发布您的调查结果以及您尝试过的代码,那将是一个很好的帮助。
答案 1 :(得分:1)
您无需使用Where-Object
,只需使用Select-Object
:
Get-Mailbox -Identity "Person Name" | Select-Object -Property *quota*