从CSV导入邮箱名称并将通讯组导出到另一个CSV

时间:2015-02-25 15:51:15

标签: powershell export-to-csv exchange-server-2010 import-from-csv

我需要从CSV文件中导入一个电子邮件列表,对于每一个我都必须列出他们所属的通讯组,但我无法让它工作。

我的CSV是一个低于另一个的电子邮件地址列表:

mail1
mail2
mail3

我设法通过手动输入名称来使脚本工作。 你可以帮我从CSV部分导入\导出吗?

这是我到目前为止所做的:

手动:

$User = read-host -Prompt "User Name"
$user_dn = (get-mailbox $user).distinguishedname
"User " + $User + " is a member of the following groups:"
foreach ($group in get-distributiongroup -resultsize unlimited) {
  if ((get-distributiongroupmember $group.identity | select -expand distinguishedname) -contains $user_dn) {$group.name}
}

来自导入:

$list = import-csv 1.csv
foreach ($entry in $list) {
$user = $entry
$user_dn = (get-mailbox $user).distinguishedname
"User " + $User + " is a member of the following groups:"
foreach ($group in get-distributiongroup -resultsize unlimited) {
  if ((get-distributiongroupmember $group.identity | select -expand distinguishedname) -contains $user_dn) {$group.name}
}

我无法进行出口工作我得到了#34;空管"错误。

1 个答案:

答案 0 :(得分:0)

在这里,我认为这将满足您的需求。

get-distributiongroup | ForEach-Object {

$groupName = $_
Get-DistributionGroupMember -Identity $groupname.Name | ForEach-Object{
    [pscustomObject]@{GroupName=$groupname;groupMember=$_.Name}
    }

} | Group-Object -Property GroupMember | Select Name, @{Name=‘Groups‘;Expression={$_.Group.GroupName}}

我们获得了所有分配组的大清单,然后,每个分组都解决了每个组的正式成员资格。对于我们发现谁是该组成员的每个用户,我们创建了一个自定义对象" username,groupname"。完成后,我们将其发送到Group-Object命令,让它挑选出每个唯一用户,并收集他们的所有成员资格。然后我们可以将其发送到CSV文件,以获得这样的输出。

#TYPE Selected.Microsoft.PowerShell.Commands.GroupInfo
"Name","Groups"
"Stephen","Group_1 Group_2 OtherFolks"
"Lenna.Paprocki","Group_2 OtherFolks"
"James.Butt","Group_2 OtherFolks"
"Josephine.Darakjy","OtherFolks"

我仍然认为XML文件是查看此内容的更好方式,因为您可以将XSLT文件叠加在顶层,以便用户可以轻松查看报告,单击用户名并查看所有组,然后根据需要崩溃。