首页 > 解决方案 > 从分发列表中获取多个详细信息

问题描述

我对 PowerShell 相当陌生,但我想导出一些交换组详细信息并将这些详细信息导出到 csv 文件中。

以下是我要导出的详细信息:

对于组的每个所有者,我还需要: - 所有者名称 - 所有者显示名称 - 所有者电子邮件地址

我已经将以下脚本放在一起,但 Csv 完全空白,并且不完全确定问题出在哪里。

$GroupsCollection=@()

$groups =  Get-Group -ResultSize Unlimited

foreach ($group in $Groups) {
        {

            $GroupInformation = New-Object  -typename PSObject

            Add-Member -InputObject $DLInformation -MemberType NoteProperty -Name DLName -Value ""
            Add-Member -InputObject $DLInformation -MemberType NoteProperty -Name DLDisplayName -Value ""
            Add-Member -InputObject $DLInformation -MemberType NoteProperty -Name DLEmailAddress -Value ""
            Add-Member -InputObject $DLInformation -MemberType NoteProperty -Name DLRecipientType -Value ""
            Add-Member -InputObject $DLInformation -MemberType NoteProperty -Name DLMemberCount -Value ""
            Add-Member -InputObject $DLInformation -MemberType NoteProperty -Name DLOwners -Value ""
            Add-Member -InputObject $DLInformation -MemberType NoteProperty -Name DLOwnerName -Value ""
            Add-Member -InputObject $DLInformation -MemberType NoteProperty -Name DLOwnerDisplayName -Value ""
            Add-Member -InputObject $DLInformation -MemberType NoteProperty -Name DLOwnerEmailAddress -Value ""

           $DLInformation.DLName = $group.Name 
           $DLInformation.DLDisplayName = $group.DisplayName 
           $DLInformation.DLEmailAddress =$group.PrimarySmtpAddress
           $DLInformation.DLRecipientType = $group.RecipientType
           $DLInformation.DLMemberCount = ($group.Members | measure).count
           $GroupInformationOwners = ($group.DisplayName | select -ExpandProperty ManagedBy)
           $DLInformation.DLOwners = $GroupInformationOwners |Out-String
           $DLInformation.DLOwnerName = $GroupInformationOwners.name |out-string
           $DLInformation.DLOwnerDisplayName = $GroupInformationOwners.displayname |out-string
           $DLInformation.DLOwnerEmailAddress = $GroupInformationOwners.PrimarySmtpAddress |out-string
           $GroupsCollection +=  $GroupInformation

        }

}



$GroupsCollection |ConvertTo-Csv -NoTypeInformation

$GroupsCollection |Export-Csv -Path "file" -NoTypeInformation

标签: powershelloffice365

解决方案


你可以试试下面的代码。

Get-DistributionGroup -ResultSize Unlimited | Foreach{
  $DisplayName=$_.DisplayName 
  $Alias=$_.Alias 
  $EmailAddress=$_.PrimarySmtpAddress 
  $GroupType=$_.GroupType 
  $ManagedBy=$_.ManagedBy
  $Members=Get-DistributionGroupMember -ResultSize Unlimited -Identity $DisplayName 
  $MembersCount=($Members.name).Count 
  $Result=@{'DisplayName'=$DisplayName;'PrimarySmtpAddress'=$EmailAddress;'Alias'=$Alias;'GroupType'=$GroupType;'Manager'=$ManagedBy;$Members;'GroupMembersCount'=$MembersCount}
  $Results= New-Object PSObject -Property $Result  
  $Results | Select-Object DisplayName,PrimarySmtpAddress,Alias,GroupType,Manager,Members,GroupMembersCount| Export-Csv -Path $ExportSummaryCSV -Notype -Append 
} 

更详细的信息,你可以参考这个博客


推荐阅读