首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PowerShell管道ExpandProperty到另一个Select

PowerShell管道ExpandProperty到另一个Select
EN

Stack Overflow用户
提问于 2021-10-18 15:42:14
回答 1查看 574关注 0票数 1

我想得到我的O365租户的所有电子邮件收件人的别名。如果我要做这个传统的Exchange,最简单的就是使用Exchange控制台提取Get-Recipient和SMTPAddress属性。(请注意,选择管道进入另一个选择;工作像冠军。)

Get-Recipient | Select Name,SamAccountName -ExpandProperty EmailAddresses | Select Name,SamAccountName,SmtpAddress

问题是,当我试图在EXO中执行相同的操作时,"EmailAddresses“属性作为平面字符串输出,所以当我尝试将其输送到第二个select时,唯一的属性是长度,而不是字符串的实际值。

下面这类作品,我觉得一定有更好的方法吗?

Get-EXORecipient | Select Name -ExpandProperty EmailAddresses | % {Write-Output "$($_.Name),$($_)"}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-18 16:11:36

正如您所述,-ExpandProperty EmailAddresses扩展为字符串。

如果您还传递(位置上隐含的) -Property参数(例如示例中的Name ),则这些字符串被修饰的附加属性是存在的,但通常不会显示出来,除非您在现在修饰的输出字符串上显式地访问它们。

如果您希望将包含每个电子邮件地址的输出对象作为属性,则需要进行更多的工作。

代码语言:javascript
复制
Get-EXORecipient | ForEach-Object {
  foreach ($emailAddress in $_.EmailAddresses) {
    [pscustomobject] @{
      EmailAddress = $emailAddress
      Name = $_.Name 
      # ... add further properties of interest here
    }
  }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69618922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档