组合PowerShell脚本以列出MailboxName,PrimarySMTPAddress,获得访问权限的人,AccessPermissions和SizeInMB

时间:2018-09-05 07:40:11

标签: powershell office365 exchange-server scripting-language

我想修改PowerShell脚本以导出UserMailbox列表,该列表具有除用户本身以外的多个人的完全代理访问权限。

以下脚本以某种方式返回结果:

Get-Mailbox -ResultSize Unlimited -RecipientTypeDetails UserMailbox | 
Get-MailboxPermission | 
Where-Object { ($_.AccessRights -like "*FullAccess*") -and 
               (-not $_.IsInherited) -and 
               ($_.User -ne "NT AUTHORITY\SELF") -and 
               ($_.User -notlike '*Discovery Management*') } |
    Select @{Name="User Name";expression={(Get-Recipient $_.User.tostring()).displayname}}, 
            Identity,
            @{Name='Access Rights';Expression={[string]::join(', ', $_.AccessRights)}},
            @{Name="PrimarySMTPAddress";expression={(Get-Recipient $_.User).PrimarySMTPAddress}} | 
        Export-Csv -path C:\EE\Results.csv -NoTypeInformation

$filter = '(Enabled -eq $false) -and (msExchRecipientTypeDetails -ne 4) -and (homeMDB -ne "$null")'
$properties = @('homeMDB', 'mailNickName', 'mail', 'DisplayName', 'SamAccountName', 'ProxyAddresses')

Get-ADUser -Filter $filter -Properties $properties  |
    ForEach-Object {
        $stat = Get-MailboxStatistics $_.SamAccountName

        $smtpAddresses = ($_.ProxyAddresses | Where-Object {$_ -like "*smtp:*" }) -replace 'smtp:'

        New-Object -TypeName PSObject -Property ([ordered]@{
            DisplayName    = $_.DisplayName
            mailNickName   = $_.mailNickName
            SamAccountName = $_.SamAccountName
            mail           = $_.mail
            ProxyAddresses = $smtpAddresses -join ';'
            HomeMDB        = $_.homeMDB.Split(',=')[1]
            MBytes         = $stat.TotalItemSize.Value.ToMB()
            LastLogonTime  = $stat.LastLogonTime
            LastLoggedOnUserAccount = $stat.SamAccountName
            DisconnectDate = $stat.DisconnectDate
        })
    } | 
    Sort-Object MBytes -Descending | 
    Export-Csv C:\EE\Results.csv -NoTypeInformation

但是我需要一些帮助来修改其他列,以便显示:

    具有多个完全代理访问权限的
  • 用户邮箱:此列将显示由多个用户访问的邮箱的显示名称。 (仅显示名称)

  • 主要SMTP地址:此列将在第一列(身份)中显示PrimarySMTPAddress或在第一列中显示邮箱的电子邮件地址。

  • 有权访问的人:此列显示拥有UserMailbox(显示名称)的人员的用户名。

  • 访问权限:显示代表的访问权限。 [这是正确的]

  • 以MB为单位的大小:此列将显示第1列中邮箱的大小(以兆字节为单位)。

1 个答案:

答案 0 :(得分:1)

我认为这可能会让您前进:

ngOnInit