使用PowerShell脚本导出多值联系人字段到CSV

5星 · 超过95%的资源 需积分: 10 6 下载量 82 浏览量 更新于2024-09-11 收藏 2KB TXT 举报
"这篇PowerShell脚本主要用于从Exchange环境中导出具有多值字段(如成员关系)的邮件联系人,并将结果保存到CSV文件中,方便进一步编辑。它特别适用于筛选包含特定字符串(例如`@cre.com.hk`)的主SMTP地址的联系人,并列出这些联系人所属的所有组。" 在PowerShell中,处理多值字段通常涉及到属性的集合,这些属性可以关联多个值,例如用户可能属于多个组。在这个脚本中,我们首先初始化变量,包括`$InputString`用于定义要筛选的SMTP地址的一部分,`$OutputCSV`定义了输出CSV文件的路径。 `Get-MailContact -ResultSizeUnlimited`命令用于获取所有邮件联系人的列表,`ResultSizeUnlimited`参数确保返回所有联系人,而不仅仅是默认限制的数量。然后,使用`Foreach-Object`遍历这些联系人,检查其`PrimarySmtpAddress`是否包含`$InputString`。 如果找到匹配的联系人,脚本会显示开始处理的电子邮件地址,并创建一个空字符串`$result`来存储联系人所属的组。通过`Get-Group -ResultSizeUnlimited -Filter "Members-eq '$dis'"`获取与当前联系人`DistinguishedName`匹配的所有组。这里`$dis`是联系人的唯一标识名。 接着,对于每个找到的组,添加其`samaccountname`到`$result`,并用分号分隔。`Add-Member` cmdlet 用于创建一个新的PSCustomObject,包含两个NoteProperty:一个是"Email",存储联系人的主SMTP地址;另一个是"Groups",存储联系人所属的组列表。 最后,所有创建的对象被添加到数组`$objs`中,并通过`Export-Csv` cmdlet 导出到CSV文件,使用`-NoTypeInformation`参数排除类型信息,以纯文本格式保存,并指定`Encoding UTF8`作为编码方式。 这个脚本对于管理员来说非常有用,他们可能需要快速地查看或编辑与特定域相关的联系人的组成员身份。通过CSV文件,这些数据可以轻松导入其他应用程序,或者进行进一步的数据分析和处理。