PowerShell 递归查询组成员

简介:

豆子今天遇见个小问题,发现某个Office365的邮件组的成员组里面居然没有配置邮件,这样导致个别用户没有收到邮件。为了避免这个情况再次发生,需要对所有的邮件组都做个检查。问题在于邮件组可能嵌套了多个组,如果人工去看实在太累,写了个小脚本扫一下。


因为是嵌套的组,于是很自然的想到了递归。指定一个邮件组,去扫一下成员,看看该成员是否配置了邮箱地址,如果这个成员刚好又是一个组,那么调用自己,重复上述步骤


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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
     {
     }
}


简单测试一下我的函数,结果如下: 普通用户(黄色),绑定了邮件的组(蓝色),没有绑定邮件的组(红色)

wKiom1mmYLah-5FKAACGDiTYGE8524.jpg


成功。






本文转自 beanxyz 51CTO博客,原文链接:http://blog.51cto.com/beanxyz/1961087,如需转载请自行联系原作者

目录
相关文章
|
2月前
|
监控 关系型数据库 MySQL
PowerShell 脚本编写 :自动化Windows 开发工作流程
PowerShell 脚本编写 :自动化Windows 开发工作流程
85 0
|
3月前
|
Windows
Powershell 重新排列去重 Windows环境变量
【9月更文挑战第13天】本文介绍如何使用PowerShell对Windows环境变量进行重新排列和去重。首先通过`$env:`访问环境变量,接着使用`-split`命令分割路径,再利用`Select-Object -Unique`去除重复项。之后可根据需要对路径进行排序,最后将处理后的路径组合并更新环境变量。注意修改环境变量前应备份重要数据并了解潜在影响。
140 10
|
7月前
|
存储 Ubuntu Linux
windows可以安装Ubuntu,ubuntu上也可以安装Powershell
powerhsell除了可以在windows上使用外,还可以在Ubuntu上部署开发环境。下面介绍Ubuntu上安装powershell的方法。
222 0
|
Shell Linux 开发工具
windows中cmd和PowerShell批处理命令
之前在 Git 批量删除本地分支,有用到 Linux 或 MacOS 下的批处理命令,这个命令中的 grep、xargs 本身是 Shell script,在 windows 中的 cmd 和 PowerShell 中是不能用的
113 0
|
JavaScript Windows
[Vue]解决 Windows PowerShell 不识别 vue 命令的问题
[Vue]解决 Windows PowerShell 不识别 vue 命令的问题
|
Windows
使用PowerShell获取Windows当前锁屏壁纸
使用PowerShell获取Windows当前锁屏壁纸 如果原始图片丢了,用这段代码就可以提取当前锁屏壁纸了!
196 0
|
应用服务中间件 nginx Windows
Windows PowerShell 中启动 Nginx 报错解决方案
Windows PowerShell 中启动 Nginx 报错解决方案
Windows PowerShell 中启动 Nginx 报错解决方案