我仍然在学习PowerShell的方法,我正在尝试使用他们的中间媒体HostPilot PowerShell工具从中间媒体中获取一些数据。
首先,我将所有通讯组信息添加到我的$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以及会计部
欢迎任何建议。谢谢!
发布于 2018-06-05 17:21:50
我真的不知道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
}
}我将其作为答案发布,因为评论中的代码显示得不是很好。
发布于 2019-10-19 02:23:27
$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
}
}
}希望这能有所帮助。
https://stackoverflow.com/questions/50691436
复制相似问题