目的:  Google Suite账号总是不够用,到底该不该买,买多少,最近人员变化情况是啥样的,怎么评估呢?总不能每次都问HR。想了个取巧的办法。

实现:

1.每天获取AD账户中在当天新创建的账户数量(对标入职)
2.每天获取AD账户中当天禁用的账户数量(对标离职)
3.将数据推送到zabbix,生成趋势图。
4.根据平均值可以计算特定周期内入职、离职的数量。

$now = (date).Date

$createtime= Get-ADUser  -SearchBase "ou=employees,dc=123,dc=com"  -Filter {objectclass -eq 'user'} -Property whencreated 
$leavetime= Get-ADUser  -SearchBase  "ou=former employee,,dc=123,dc=com"   -Filter {objectclass -eq 'user'} -Property whenChanged

$newnum=$closednum=0

foreach($i in $createtime.whencreated.date){
   if ($i -eq $now){
     $newnum +=1
   }  
}

foreach($i in $leavetime.whenchanged.date){
   if ($i -eq $now){
     $closednum +=1
   }  
}

C:\zabbix\bin\zabbix_sender.exe -z Zabbix_Server_IP -p 10051 -s DC01  -k new_users -o $newnum
C:\zabbix\bin\zabbix_sender.exe -z Zabbix_Server_IP -p 10051 -s DC01  -k closed_users -o $closednum

为了测试,修改 $now=(date).adddays(-1).date, 检查昨日数据,与实际情况匹配。效果图:

image.png

设置为定时任务,每日23:00运行一次。

也可以每日运行以下脚本获取当天总用户数(数据就不贴了)。

$users=Get-ADUser -SearchBase "ou=employees,dc=123,dc=com"  -Filter {ObjectClass -eq 'user'} -ResultSetSize 10000 | ?{$_.Enabled -eq $true}
$userNum=($users.Name).Count 

C:\zabbix\bin\zabbix_sender.exe -z Zabbix_Server_IP -p 10051 -s DC01  -k total_adusers -o $userNum