我仍在学习PowerShell的方法,而且我正在尝试使用他们的Intermedia HostPilot PowerShell工具从Intermedia获取一些数据。
首先,我首先将所有通讯组信息添加到我的$ Groups数组中:
$Groups = Get-DistributionGroup
我能够获取发布组中那些的DisplayName和EmailAddress,但我不知道哪个用户在哪个组中:
for ($i=0; $i -lt $Groups.length; $i++)
{ Get-DistributionGroupMember -Identity $Groups[$i].DistinguishedName |
Select DisplayName, EmailAddress }
我在网上找到了以下脚本(https://www.morgantechspace.com/2015/06/powershell-export-distribution-list-members-to-csv.html),这有用但我仍然没有在我的csv文件中看到该组的成员,只是一个发布组列表:
$Groups = Get-DistributionGroup
$Groups | ForEach-Object {
$group = $_.GUID
$members = ''
Get-DistributionGroupMember $group | ForEach-Object {
If($members) {
$members=$members + ";" + $_.GUID
} Else {
$members=$_.GUID
}
}
New-Object -TypeName PSObject -Property @{
GroupName = $group
Members = $members
}
} | Export-CSV "C:\\Distribution-Group-Members.csv" -NoTypeInformation -Encoding UTF8
理想情况下,我希望有一个额外的列,显示每个用户的分发组。像这样:
DistributionGroup DisplayName的EmailAddress的
会计Rob Smith rob.smith@yahoo.com
会计John Quincy john.quincy@yahoo.com
这是我尝试的一种变体:
for ($i=0; $i -lt $Groups.length; $i++)
{ Get-DistributionGroupMember -Identity $Groups[$i].DistinguishedName |
Select DisplayName, EmailAddress, $Groups[$i].DisplayName }
这只是给我一个带有第一个分发组名称的标题,如下所示:
DisplayName的EmailAddress的会计
欢迎任何提示。谢谢!
答案 0 :(得分:0)
我真的不知道Intemedia HostPilot powershell命令是什么,但在简单的PowerShell中你可以使用类似的东西:
$DGroups = Get-ADGroup -Filter {(GroupCategory -eq "Distribution")} | select Name
Foreach ($Group in $DGroups)
{
write-host""
write-host "Members of the >>> "$Group.Name" <<< are:"
write-host "--------"
$Users = Get-ADGroupMember $Group.Name | Select samaccountname | sort Samaccountname
Foreach ($user in $users)
{
Get-ADUser -Identity $user.samaccountname -Properties * | select Name, Samaccountname, mail, displayname
}
}
我发布它作为答案,因为评论中的代码没有很好地显示。
答案 1 :(得分:0)
$ Result对象与您提供的所需格式示例相匹配,可以输出到控制台,通过管道传输到Out-GridView或导出为CSV。
$DGroups = Get-DistributionGroup
$Result = @()
foreach ( $DGroup in $DGroups ) {
$DGroup | Get-DistributionGroupMember | Select-Object DisplayName, EmailAddress | ForEach-Object {
$Result += [PSCustomObject]@{
DistributionGroup = $DGroup.DisplayName
DisplayName = $_.DisplayName
EmailAddress = $_.EmailAddress
}
}
}
希望这会有所帮助。