豆子今天遇见个小问题,发现某个Office365的邮件组的成员组里面居然没有配置邮件,这样导致个别用户没有收到邮件。为了避免这个情况再次发生,需要对所有的邮件组都做个检查。问题在于邮件组可能嵌套了多个组,如果人工去看实在太累,写了个小脚本扫一下。
因为是嵌套的组,于是很自然的想到了递归。指定一个邮件组,去扫一下成员,看看该成员是否配置了邮箱地址,如果这个成员刚好又是一个组,那么调用自己,重复上述步骤
function get-member
{
[CmdletBinding()]
[Alias()]
[OutputType([int])]
Param
(
# Param1 help description
[Parameter(Mandatory=$true,
ValueFromPipelineByPropertyName=$true,
ValueFromPipeline=$true,
Position=0)]
[string]
$name
)
Begin
{
}
Process
{
$a=Get-DistributionGroupMember $name -ErrorAction SilentlyContinue
if($a -eq $null){
return
}
foreach($b in $a){
if (($b.Recipienttype -eq'Usermailbox') -or ($b.Recipienttype -eq 'MailContact') -or ($b.Recipienttype -eq 'User')){
write-host $b.name -ForegroundColor DarkYellow
}
else{
if($b.primarysmtpaddress -eq ""){
write-host $b.name -ForegroundColor red
}
else{
write-host $b.name -ForegroundColor Cyan
get-member $b.name
}
}
}
}
End
{
}
}
简单测试一下我的函数,结果如下: 普通用户(×××),绑定了邮件的组(蓝色),没有绑定邮件的组(红色)
成功。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。