【发布时间】:2017-04-19 21:12:37
【问题描述】:
我正在使用下面的代码来检索并同时为smtp-属性中的每个smtp-属性添加一个分隔符“,”。
get-mailbox | select-object DisplayName,PrimarySMTPAddress, @{Name='EmailAddresses';Expression={[string]::join(", ", ($_.EmailAddresses))}}
但我还想对EmailAddressess 的值进行排序,以便通过使用 powershell 并尽可能少的努力(短代码),大写始终排在第一位。
如果您不熟悉 Microsoft Exchange:EmailAddresses 中的每个值首先以 smtp: 或 SMTP: 开头,然后是用户的各种电子邮件地址。大写 SMTP 表示它是发送电子邮件时使用的主要 SMTP 地址。小写的smtp 表示它只是另一个电子邮件地址。
我想对输出进行排序,以便 SMTP:*-value 排在第一位。
奖金问题,在Expression-block 中;多个[string]:: 重载可以一起使用吗?如果可以怎么办?
我试图通过使用 [string]::OrderBy() 和 [string]::OrderByDescending() 来实现排序输出,但我不知道如何将它们与 [string]::split() 一起使用。
感谢用户 4c74356b41,我现在意识到我的字符串不包含 OrderBy() 或 OrderByDescending(),因此它们无法使用。
【问题讨论】:
-
字符串不包含
OrderByDescending()或OrderBy() -
这就解释了。谢谢。
-
你可以使用
Sort-Object在powershell中进行排序。像这样:$a = @('b','A'); $a | Sort-Object -
您说:字符串不包含
OrderbyDescending()或OrderBy()如何根据支持的方法检查字符串包含的内容。 -
'a' | gm,所以请使用Get-Member,这是 Powershell 中的 3 个基本 cmdlet 之一。我没有要测试的交换,但您可以使用| Sort-Object -Property EmailAddresses对它们进行排序(因此使用您的“人工”属性)
标签: email powershell scripting exchange-server