论坛上看见有人问如何用powershell查看管理员组的变化,豆子写了个很简单的脚本实现这个功能,写的非常简单,就是一个思路验证了一下而已。
首先获取一下当前的组成员信息吧,Powershell 3.0以后可以直接使用AD module里面的很多命令,一个比较好使的命令是 Get-ADReplicationAttributeMetadata,可以获取对象相关的metadata 信息。比如下面我可以获取testgroup1里面每个成员创建的时间状态。
1
2
|
$dn
=(
get-adgroup
"testgroup1"
).distinguishedname
Get-ADReplicationAttributeMetadata
$dn
-Server syddc01 -ShowAllLinkedValues |
Where-Object
{
$_
.attributename
-eq
'member'
} | select FirstOriginatingcreatetime, attributevalue |
export-csv
c:\temp\old.csv
|
可以看见,目前这个组只有2个成员
新加一个成员进去,再次执行一下,可以看见新的成员变化
1
|
Get-ADReplicationAttributeMetadata
$dn
-Server syddc01 -ShowAllLinkedValues |
Where-Object
{
$_
.attributename
-eq
'member'
} | select FirstOriginatingcreatetime, attributevalue |
export-csv
c:\temp\new.csv
|
把两次结果都保存下来,然后利用compare-object比较一下,如果不为空,发送个邮件
1
2
3
4
5
6
7
8
|
$a
=
get-content
C:\temp\old.csv
$b
=
Get-Content
C:\temp\new.csv
$result
=
Compare-Object
$a
$b
if
(
$result
){
Send-MailMessage
-From
"test@abc.com"
-To
"yuan.li@syd.ddb.com"
-Subject
"Test email"
-Body
$result
-SmtpServer ultimo -Port 25
}
|
测试邮件如下所示,成功
本文转自 beanxyz 51CTO博客,原文链接:http://blog.51cto.com/beanxyz/1675273,如需转载请自行联系原作者