Exchange 2010 Powershell命令?

  1. 我想知道是否有人知道Exchange 2010的PowerShell命令列出邮箱和/或特定邮箱无权访问的用户。
    我们有一个系统帐户,我们需要授予对大多数(但不是全部)用户邮箱的完全访问权限。 我们希望每个月都会运行一个命令,告诉我们哪个用户这个账户没有完整的权限,所以我们可以在需要的时候纠正这个问题并导出到csv。

  2. 我想要一个命令列出用户和谁拥有完整的权限。 我发现这一点,但它返回的结果似乎并不完全准确(当我比较csv与EMC,EMC的一些帐户将显示3其他用户有权访问他们的邮箱,但CSV只报告1用户)。

    Get-Mailbox | Get-MailboxPermission | where {$_.user.tostring() -ne “NT AUTHORITY\SELF” -and $_.IsInherited -eq $false} | Select Identity,User,@{Name='Access Rights';Expression={[string]::join(', ', $_.AccessRights)}} | Export-Csv -NoTypeInformation mailboxpermissions.csv 

#1 – 自己写了这个(修改)。 这不是一个简单的单行程式,因为它评估每个邮箱中每个权限条目的值在一对嵌套循环中。 不幸的是,我无法想出一个办法来进一步简化这个(可能是因为我缺乏PowerShell的专业知识)。 它基本上获取所有邮箱并将它们存储在一个variables中,然后获取每个邮箱的权限,根据特定条件(具有邮箱上的FullAccess条目的系统用户)评估每个权限条目。 如果在任何权限条目上满足该条件,则将$ accessvariables设置为“True”。 在它经历了邮箱上的所有权限条目之后,它会查看$ accessvariables,如果它仍然是False,则会将邮箱添加到csv文件(不是真正的csv,因为每行只有1个条目文件)。

 Import-Module C:\Temp\Exchange.psm1 $csv = "C:\Temp\systemuser.csv" $user = "<system user>" $mailboxes = Get-Mailbox * ForEach ($mailbox in $mailboxes) { $access = "False" $perms = $mailbox | Get-MailboxPermission ForEach ($item in $perms) { if ($item.User -like $user -and $item.AccessRights -like "*FullAccess*") { $access = "True" } } if ($access -eq "False") { ac $csv "$($mailbox)" } } 

#2 – 自己写了大部分,但是挣扎得到AccessRights属性到一个string,所以它会出口到CSV,所以我GOOGLE了, 发现你find与你的问题中的脚本相同的文章 ,它工作正常。 我认为csv所说的和EMC所说的之间的差异在于,文章中的脚本过滤了inheritance的权限。 我在下面修改它不过滤掉inheritance的权限,并在输出中包含“IsInherited”属性,以便您可以判断它是否是显式的。

Get-MailboxPermission * | ? {$_.user -notlike "NT AUTHORITY\SELF"} | Select Identity ,User,@{Name='Access Rights';Expression={[string]::join(', ', $_.AccessRights)}},IsInherited | Export-csv -NoTypeInformation c:\temp\mailboxpermissions.csv

我在我的系统上testing了这个命令,而且它正在按照你所希望的那样工作。

但是,如果您只是比较您在EMC中看到的情况,则可能会预期错误的结果。 该命令设置为仅显示非inheritance权限。 EMC将向您显示inheritance的和非inheritance的(不指定哪个是哪个)。 你可能想要做的只是在Powershell中运行这部分代码:

 Get-Mailbox | Get-MailboxPermission | where {$_.user.tostring() -ne “NT AUTHORITY\SELF” -and $_.IsInherited -eq $false} 

并将其与您的结果CSV进行比较。

或者,你可以运行这个:

 Get-Mailbox | Get-MailboxPermission | where {$_.user.tostring() -ne “NT AUTHORITY\SELF”} 

这将通过Powershell向您显示inheritance权限和非inheritance权限,然后将其与CSV结果进行比较。