显示Intermedia HostPilot PowerShell的分发列表和成员

时间:2018-06-05 03:09:36

标签: powershell

我仍在学习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的会计

欢迎任何提示。谢谢!

2 个答案:

答案 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
        }
    }
}

希望这会有所帮助。