使用Powershell审核Exchange 2007邮箱完全访问权限

时间:2010-01-04 10:32:45

标签: powershell permissions audit exchange-server-2007

有时我会被要求生成一个对特定Exchange 2007邮箱具有完全访问权限的用户列表。目前我手动执行此操作,理想情况下我喜欢使用Powershell。

无论如何产生完全访问权限列表(以及代表发送权限也很有用)。

谢谢, 强尼

5 个答案:

答案 0 :(得分:2)

Send-As权限存储在活动目录中,因此获取它们有点棘手。如果您想从两个结果中组合您关注的属性,可以使用Add-Member。

完全访问权限:

get-mailbox | %{$foo = $_; Get-MailboxPermission $foo | ?{$_.AccessRights -eq "FullAccess" -and $_.IsInherited -eq $false}} | ft {$foo},User,AccessRights

发送身份:

get-mailbox | %{$mailbox = $_; Get-ADPermission $mailbox.DistinguishedName | ?{$_.ExtendedRights -like "Send-As" -and $_.User -notlike "NT AUTHORITY\SELF"}} | ft {$mailbox},user,{"Send-As"}

答案 1 :(得分:2)

除了Slipsecs之外,还有一个替代发送 - 身份权限审核。

$(Get-Mailbox -Identity mailboxName).GrantSendOnBehalfTo | ft Name

这仅返回手动添加的用户,而不返回自动生成的用户。

再次感谢Slipsec的帮助!

答案 2 :(得分:1)

get-mailbox -identity MailBoxName | %{$foo = $_; Get-MailboxPermission $foo | ?{$_.AccessRights -eq "FullAccess" -and $_.IsInherited -eq $false}} | ft {$foo},User,AccessRights

如果您正在为特定邮箱上的用户查找权限。将MailBoxName替换为您尝试运行报告的邮箱的确切名称。它是关于邮箱名称和别名的KeySensitive。

答案 3 :(得分:0)

get-mailbox | %{$foo = $_; Get-MailboxPermission $foo | ?{$_.AccessRights -eq "FullAccess" -and $_.IsInherited -eq $false}} | ft {$foo},User,AccessRights

在上面的命令中,我用邮箱或用户名替换foo吗?我尝试了这个命令,它说无法绑定,因为对象为空 - 非常感谢您的帮助。

答案 4 :(得分:0)

我知道这已经过时了,但是为了防止其他人遇到此线程寻求帮助,回答OP的最后一个问题,$foo表示在运行命令之前必须定义的变量,所以例如:

$foo = 'Example User'

get-mailbox | %{$foo = $_; Get-MailboxPermission $foo | ?{$_.AccessRights -eq "FullAccess" -and $_.IsInherited -eq $false}} | ft {$foo},User,AccessRights