PowerShell新手求助:从Get-MgUserContact结果提取邮箱与办公电话
提取联系人的邮箱地址和办公电话
你现在的代码已经能获取到联系人集合,但需要调整来精准提取目标字段,以下是可行方案:
修正代码中的变量错误
你循环里的$FolderID = $contacts.parentFolderId用了复数的$contacts(整个联系人集合),应该改成当前循环的单个联系人对象$contact,否则会拿到所有联系人的parentFolderId数组。
提取目标字段的具体方法
1. 提取邮箱地址(emailAddresses.address)
EmailAddresses是包含多个邮箱对象的数组,你可以直接访问它的Address属性,PowerShell会自动展开数组中的所有地址:
$contact.EmailAddresses.Address
如果只需要第一个邮箱地址,用索引定位:
$contact.EmailAddresses[0].Address
2. 提取办公电话(businessPhones)
BusinessPhones本身就是字符串数组,直接访问即可拿到所有办公电话:
$contact.BusinessPhones
同样,取第一个电话用索引:
$contact.BusinessPhones[0]
完整示例代码
把提取的字段整理成自定义对象,方便查看和后续处理:
$mailbox="SomeUser@myCompany.com" $Contacts = Get-MgUserContact -UserId $mailbox foreach($contact in $Contacts){ # 提取单个联系人的目标字段 $contactInfo = [PSCustomObject]@{ ContactID = $contact.Id ParentFolderID = $contact.parentFolderId EmailAddresses = $contact.EmailAddresses.Address -join ';' # 多个邮箱用分号分隔 BusinessPhones = $contact.BusinessPhones -join ';' # 多个电话用分号分隔 } # 输出当前联系人的信息 $contactInfo }
执行这段代码后,会得到类似这样的结构化输出:
ContactID : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx ParentFolderID : yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy EmailAddresses : Firstname.Lastname@myCompany.com BusinessPhones : +1 002 224 512
内容的提问来源于stack exchange,提问作者Bobo
相关产品推荐
相关产品推荐

