Powershell - 获取具有发件人限制的分发列表

时间:2017-10-02 10:48:12

标签: powershell email export-to-csv

我们有一个分发列表(例如,名为“TopGroup”),其中包含子DL,以及普通的个人用户电子邮件帐户以及这些嵌套的DL。出于某种原因,只有个人帐户收到发送给MasterDL的任何邮件。子DL内的任何成员都不会收到发送到收件箱中的MasterDL的任何内容。然后我注意到在某些子DL上有限制(只允许特定用户向特定通讯组发送邮件。)。我一直在使用Exchange Server 2013.

关于这个的脚本?我们正在寻找的是一个可以

的PowerShell脚本

1 - 识别所有嵌套组

2 - 识别每个TOP DL检查第二层DL

2 - 识别具有发件人限制并获取列表

的第二层DL分发列表

3 - 报告并输出到CSV

4 - 可选 - 通过电子邮件通知用户和经理以及IT小组

它将输出如下:

ParentGroupName    SubDL1  Restriction     SubDL2     Restriction       .... so on

Group              Group1  GroupA,GroupB   Group2     GroupA,GroupB,Group

到目前为止,这是我的脚本:

    Import-Module ActiveDirectory

    $groups = Get-ADGroup -Filter "name -like '*'" -SearchBase "OU=Groups,DC=contoso,DC=com" | Select SamAccountName
    Foreach ($g in $groups)
    {
      $member = Get-ADGroupMember $g | ?{$_.ObjectClass -eq "Group"} | Select Name,SamAccountName
      foreach ($sg in $member)
      {
      $sgname = $sg.name
      Write-Host $sgname -foregroundcolor "magenta" -backgroundcolor "yellow"
      $dg = Get-DistributionGroup -Identity "$sgname"

      if ($dg.AcceptMessagesOnlyFromDLMembers.count -ne 0){

      Write-Host "$($dg.Name) has mail attribute set" -ForegroundColor Green
     Get-DistributionGroup -ResultSize Unlimited -filter {AcceptMessagesOnlyFromDLMembers -ne $null} | select-object Name,@{Name="AcceptMessagesOnlyFromDLMembers";Expression={[string]::join(";",($_.AcceptMessagesOnlyFromDLMembers| foreach {$_.name}) )}}
  }
      }

    elseif($dg.AcceptMessagesOnlyFromDLMembers.count -eq 0){
    Write-Host "$($dg.Name) has no mail attribute set" -ForegroundColor Cyan

    }

       }

    }

错误讯息:

#Test_groupA has mail attribute set Get-ADGroupMember : Cannot bind parameter 'Identity'. Cannot convert value "@{SamAccountName=test}" to type  "Microsoft.ActiveDirectory.Management.ADGroup". Error: "Cannot convert the "@{SamAccountName=test}" value of  type "Selected.Microsoft.ActiveDirectory.Management.ADGroup" to type "Microsoft.ActiveDirectory.Management.ADGroup"." At line:9 char:31
+   $member = Get-ADGroupMember $g | ?{$_.ObjectClass -eq "Group"} | Select Name,S ...
+                               ~~
    + CategoryInfo          : InvalidArgument: (:) [Get-ADGroupMember], ParameterBindingException
    + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.ActiveDirectory.Management.Commands.GetADGroupMember

谢谢,

0 个答案:

没有答案