首页 > 解决方案 > Powershell Get-Mailbox 循环

问题描述

Get-Mailbox用来抓取用户/邮箱名称,然后Get-MailboxPermission搜索。

Get-Mailbox -ResultSize unlimited -Filter {name -like "a*"} | Get-MailboxPermission | where { ($_.AccessRights -eq “FullAccess, ChangePermission”) | blah blah

a*每个起始字母( ,,b*c*)都有不同的行。这工作正常,但似乎这可以通过某种循环(foreachforeach-object)和数组引用(@("a","b")-或者它可能需要@("a*","b*"))来完成,但我可能稍后可以计算出通配符部分。

我不会在没有过滤器的情况下运行,因为邮箱太多并且内存使用量很大,使用逐个字母的引用,内存似乎在每个字母处回落(并且在每个字母之间运行垃圾收集似乎有帮助 -每个字母的输出都写入 .csv)。

想任何人 - 我觉得我错过了一些简单的东西,因为到目前为止尝试使用数组是行不通的。结果它通常会吐回所有邮箱与精选信箱(a,b,c)。

标签: powershellloops

解决方案


您可以遍历数组以避免多行。

$alphabet = [char[]]([int][char]'a'..[int][char]'z')

foreach ($letter in $alphabet) {  

    Get-Mailbox -ResultSize unlimited -Filter "name -like '$letter*'" | Get-MailboxPermission | where { ($_.AccessRights -eq “FullAccess, ChangePermission”) | blah blah   

} # end foreach

本主题讨论优美的字母数组。


推荐阅读