我正在尝试获取其权限中列出了AD组的邮箱列表。 我感兴趣的所有AD组都以相同的3个字符开头。
我有......
get-mailbox -resultsize unlimited | Get-MailboxPermission | where {$_.user.tostring() -like "xxx*"} | out-file $file -append -noclobber -encoding ascii
但它似乎没有在文件中添加任何内容
我做错了什么?
TIA
安迪
答案 0 :(得分:0)
我有一种偷偷摸摸的感觉,此后会有更多问题,但问题的部分是在传递到cmdlet Get-MailboxPermission
时丢失邮箱详细信息。如果您匹配标准稍微提高一点,您的输出将只是匹配但不是哪个邮箱的组。
$file = "c:\temp\test.csv"
$matchPrefix = [regex]::Escape("Ex") # We use escape incase of special charaters in regex. Period would be one to expect.
$regex = "YOURDOMAIN\\$matchPrefix" # Keep those backslashes
Get-Mailbox mc* | ForEach-Object{
$results = $_ | Get-MailboxPermission | Where-Object{$_.User.ToString() -match $regex}
If($results){$_}
} | Select Name,Alias | Export-CSV $file -Append -NoTypeInformation
这将占用每个邮箱,并检查每个邮箱是否存在组/用户。使用$regex
我们会检查每个找到的用户/组。如果它们存在,则-match
将返回True,满足Where块,并且邮箱将在管道中传递以进行导出。
对于导出,我们只将邮箱名称和别名发送到$file
指定的csv文件
<强>注意事项强>
您在交换时可能没有的PowerShell 3.0中提供了 -Append
。我可以被删除。
<强>假设强>
我假设您只想要与您指定的组前缀匹配的邮箱。如果您希望与其匹配的实际组可以使用一些额外的逻辑。我想知道在我猜之前我的建议是否足够。
答案 1 :(得分:0)
此代码有效,并且还清楚这些权限属于哪个邮箱:
get-mailbox -resultsize 1000 | foreach{
Write-Host $_.PrimarySMTPAddress -ForegroundColor Green;
$permissions = Get-MailboxPermission $_.PrimarySMTPAddress | ?{$_.User -match "Ryan"}
if($permissions){
$permissions | FT -AutoSize;
$_.PrimarySmtpAddress | Out-File C:\Test.txt -append -noclobber -encoding ascii;
$permissions | FT -AutoSize | Out-File C:\Test.txt -append -noclobber -encoding ascii;
}
}
请注意:我检查了$ _。user.tostring()产生的内容,以便了解我在寻找与“匹配”布尔逻辑相关的内容。