根据主题,我试图为特定的邮箱获取属性的名称和与该属性相结合的值。
因此,下面的行获得了一个很好的可用对象属性列表,输出中显示的默认列的标题为“Name”。
Get-Mailbox -Identity "Person Name" | gm然后我想说这样的话:
我尝试过一些使用-ExpandProperty/Select/Where的东西,但它们都失败了。我相信这是非常基本的,但Powershell绝对不是我的优势。有人能告诉我如何正确地构造这条管道吗?
发布于 2017-04-12 09:12:33
您不需要使用Where-Object,只需要使用Select-Object
Get-Mailbox -Identity "Person Name" | Select-Object -Property *quota*发布于 2017-04-12 07:00:11
你似乎使用了正确的命令。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中尝试过的代码,这将是一个很大的帮助。
https://stackoverflow.com/questions/43361884
复制相似问题