【问题标题】:PowerShell retrieve and sort EmailAddressesPowerShell 检索和排序电子邮件地址
【发布时间】: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(),因此它们无法使用。

MSDN: OrderBy Method
MSDN: OrderbyDescending Method

【问题讨论】:

  • 字符串不包含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


【解决方案1】:

您可以在表达式中嵌套管道排序。

@{Name='EmailAddresses';Expression={[string]::join(", ", ($_.EmailAddresses | Sort-Object))}}

99% 确定这对你有用,但没有模拟完整的测试以确保如果失败,请告诉我。

【讨论】:

  • 我从未尝试过使用排序对象的位置。然而,这是一个不起作用的例子:...Expression={[string]::join(", ", ($_.EmailAddresses))| Sort-Object -Property EmailAddresses}}我明天会试试你的建议。
  • 是的,这行不通,当您到达该管道的排序阶段时,您已经构建了对象数组,然后您要求管道根据 @987654323 对整个数组进行排序@ 每个对象的属性,因此您将对对象本身进行排序,而不是对电子邮件进行排序,将排序放在表达式中会对电子邮件进行排序,然后再将它们添加到添加到数组中的对象中。如果您运行它,我的代码是否有效?
  • 我已经尝试过了,不幸的是它不起作用。我尝试了不同的方法,但没有一个真正完美。奇怪的是对象的排序方式不同,但 SMTP:* 并非在所有情况下都首先出现。 ...Expression={[string]::join(", ", ($_.EmailAddresses| Sort-Object -Property EmailAddresses))}} 和:...Expression={[string]::join(", ", ($_.EmailAddresses| Sort-Object -CaseSensitive))}} 和:...Expression={[string]::join(", ", ($_.EmailAddresses| Sort-Object -CaseSensitive -Descending))}}
猜你喜欢
  • 1970-01-01
  • 2012-10-03
  • 2013-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-29
  • 2021-11-04
相关资源
最近更新 更多