我想修改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列中邮箱的大小(以兆字节为单位)。
答案 0 :(得分:1)
我认为这可能会让您前进:
ngOnInit