gpt4 book ai didi

PowerShell 列出具有超过 1 人的完全访问委托(delegate)权限的 Exchange 邮箱

转载 作者:行者123 更新时间:2023-12-03 01:03:48 25 4
gpt4 key购买 nike

我需要知道除了用户显示名称本身之外,还有多个人当前访问了哪个 Exchange 用户邮箱。这是我的代码:

Get-Mailbox -ResultSize Unlimited | Get-MailboxPermission | Where-Object { ($_.AccessRights -eq "FullAccess") -and ($_.IsInherited -eq $false) -and -not ($_.User -like "NT AUTHORITY\SELF") -and -not ($_.User -like '*Discovery Management*') } |
Select @{Name="User Name";expression={(Get-Recipient $_.user.tostring()).displayname}}, Identity,AccessRights,PrimarySMTPAddress | Export-Csv C:\Results.csv -NoTypeInformation

这里需要修复什么?

最佳答案

虽然使用 -and -not是正确的,我不会说这不是最优雅的方法,因为 -like 存在相反的运算符和 -eq (由 @Paxz 在现已删除的评论中提出)。您的 where声明可以修改为:

 Where-Object { ($_.AccessRights -like "*FullAccess*") -and (-not $_.IsInherited) -and ($_.User -ne "NT AUTHORITY\SELF") -and ($_.User -notlike '*Discovery Management*') }

我所做的更改:
# from
($_.AccessRights -eq "FullAccess")
# to
($_.AccessRights -like "*FullAccess*")

包括用户在 AccessRight 中具有一个或多个访问条目的情况(虽然我不确定在现实生活中是否需要它)。您的代码将过滤 {FullAccess, ReadPermission}因为它不等于 FullAccess .
# from
($_.IsInherited -eq $false)
# to
(-not $_.IsInherited)

为什么?更优雅。 IsInherited是 bool 值,可以直接使用 -not .
# from
-and -not ($_.User -like "NT AUTHORITY\SELF")
# to
-and ($_.User -ne "NT AUTHORITY\SELF")

为什么? like/ notlike这里不需要,可以使用 -ne直接地。
# from 
-and -not ($_.User -like '*Discovery Management*')
# to
-and ($_.User -notlike '*Discovery Management*')

与上面类似,但我不确定这里可能有哪些值,所以我没有更改为 -ne .

此外,在您的 Select-Object您使用 PrimarySMTPAddress这将不起作用,因为权限条目没有这样的参数。您必须使用与 User Name 类似的方法。 (另外,我不认为 .ToString() 在这种情况下是必要的):
@{Name="PrimarySMTPAddress";expression={(Get-Recipient $_.user).PrimarySMTPAddress}}

关于PowerShell 列出具有超过 1 人的完全访问委托(delegate)权限的 Exchange 邮箱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52149486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com