首页 > 系统相关 >windows AD域控密码过期企业微信推送告警

windows AD域控密码过期企业微信推送告警

时间:2024-12-04 18:43:25浏览次数:4  
标签:AD 密码 windows 微信 Get 过期 企业

在写了windows AD域控密码过期邮件推送告警后,有网友问我能不能写一篇关于企业微信推送的文章
如果需要看邮件推送或者需要自定义脚本,可以参考我的文章 windows AD域控密码过期邮件通知迭代版本

1.企业微信告警要求

1.1.企业微信推送需要具备的条件

  • 需要在企业微信中创建企业微信应用,企业微信的应用创建可以参考:zabbix第三篇-zabbix配置企业微信告警
  • 需要在AD域内找一个参数写上企业微信userid,以便将信息发送至对应的人员

1.2.AD域控内添加企业微信userid值

  • 我再这里使用web page属性配置为企业微信userid值

  • 用户的userid值,可以通过企业微信的通讯录导出

2.powersshell通过企业微信发送的脚本

# 引入Activedirectory模块
Import-Module ActiveDirectory

# 强制使用 TLS 1.2,企业微信接口只支持TLS1.2及以上版本
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

# 企业微信的CorpID
$corpID = "corpID"
# 企业微信应用的应用的Secret
$corpSecret = "corpSecret"
# 企业微信应用的ID
$agentID = "agentID"

# 获取访问令牌
$authUrl = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$corpID&corpsecret=$corpSecret"
$authResponse = Invoke-RestMethod -Uri $authUrl -Method Get
$accessToken = $authResponse.access_token

# 筛选合规用户
$alladuser = Get-ADUser -SearchBase "DC=SEC,DC=lab" -Filter {Enabled -eq $true  -and PasswordNeverExpires -eq $false} | %{$_.SamAccountName}

#################################################
# 检测AD密码过期时间并通过企业微信通知相应账户和管理员
#################################################
foreach ($user in $alladuser) {
    $userpassinfo = Get-ADUser $user -Properties msDS-UserPasswordExpiryTimeComputed
    $pwdExpiryTimeFileTime = $userpassinfo.'msDS-UserPasswordExpiryTimeComputed'
    $userweixin = Get-ADUser $user -Properties * | %{$_.wWWHomePage}
    $userdisName = Get-ADUser $user -Properties * | %{$_.DisplayName}
    $pwdExpiryTime = [datetime]::FromFileTime([int64]$pwdExpiryTimeFileTime)
    $now = Get-Date
    $expire_days = ($pwdExpiryTime - $now).Days
    if ($expire_days -eq 15 -and $userweixin) {
        $chineseusername = Get-ADUser $user -Properties * | %{$_.DisplayName}
        # 企业微信消息正文
        $weixinMessageBody =
        "亲爱的 $chineseusername 同学:`r`n`r`n" +
        "您的域账户密码即将在 $expire_days 天后过期,$pwdExpiryTime 之后密码过期未修改会导致您无法连接使用域账号登陆各种系统请您尽快更改。`r`n`r`n" +
    
		"重置密码过程请遵循以下原则:`r`n" +
		"○ 密码长度最少 8 位;`r`n" +
		"○ 密码可使用最长时间 90天,过期需要更改密码;`r`n" +
		"○ 密码不得重新设置为初始密码;`r`n" +
		"○ 强制密码历史 2个(不能使用之前最近使用的 2 个密码);`r`n`r`n" +
		"○ 密码符合复杂性需求(大写字母、小写字母、数字和符号四种中必须有三种、且密码口令中不得包括全部或部分用户名)`r`n" +
    
		"密码修改系统如下:`r`n" +
		"○ 修改密码连接:密码修改的URL `r`n" +
		"○ 重置密码链接:密码重置系统的URL `r`n" +

		"谢谢,祝您生活愉快!" 


        # 构建企业微信消息体
        $weixinMessage = @{
            "touser"   = $userweixin
            "msgtype" = "text"
            "agentid" = $agentID
            "text"    = @{
                "content" = $weixinMessageBody
            }
            "safe"    = 0
        } | ConvertTo-Json -Depth 10

        # 使用 UTF-8 编码发送请求
        $bytes = [System.Text.Encoding]::UTF8.GetBytes($weixinMessage)

        # 发送企业微信消息
        $weixinUrl = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$accessToken"
        Invoke-RestMethod -Uri $weixinUrl -Method Post -Body $bytes -ContentType "application/json"
    }
    elseif ($expire_days -le 2 -and $userweixin) {
        $chineseusername = Get-ADUser $user -Properties * | %{$_.DisplayName}
        # 企业微信消息正文
        $weixinMessageBody =
        "亲爱的 $chineseusername 同学:`r`n`r`n" +
        "您的域账户密码即将在 $expire_days 天后过期,$pwdExpiryTime 之后密码过期未修改会导致您无法连接使用域账号登陆各种系统请您尽快更改。`r`n`r`n" +
    
		"重置密码过程请遵循以下原则:`r`n" +
		"○ 密码长度最少 8 位;`r`n" +
		"○ 密码可使用最长时间 90天,过期需要更改密码;`r`n" +
		"○ 密码不得重新设置为初始密码;`r`n" +
		"○ 强制密码历史 2个(不能使用之前最近使用的 2 个密码);`r`n`r`n" +
		"○ 密码符合复杂性需求(大写字母、小写字母、数字和符号四种中必须有三种、且密码口令中不得包括全部或部分用户名)`r`n" +
    
		"密码修改系统如下:`r`n" +
		"○ 修改密码连接:密码修改的URL `r`n" +
		"○ 重置密码链接:密码重置系统的URL `r`n" +

		"谢谢,祝您生活愉快!" 


        # 构建企业微信消息体
        $weixinMessage = @{
            "touser"   = $userweixin
            "msgtype" = "text"
            "agentid" = $agentID
            "text"    = @{
                "content" = $weixinMessageBody
            }
            "safe"    = 0
        } | ConvertTo-Json -Depth 10

        # 使用 UTF-8 编码发送请求
        $bytes = [System.Text.Encoding]::UTF8.GetBytes($weixinMessage)

        # 发送企业微信消息
        $weixinUrl = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$accessToken"
        Invoke-RestMethod -Uri $weixinUrl -Method Post -Body $bytes -ContentType "application/json"
    }
}

3.企业微信告警的验证

  • 在ad域机器上运行该脚本后,就可以推送相关消息

4.定时运行脚本

  • 在定时任务中新建定时任务,定时运行powershell脚本

标签:AD,密码,windows,微信,Get,过期,企业
From: https://www.cnblogs.com/amsilence/p/18586947

相关文章

  • windows系统下 重置mysql数据库的密码
    停掉mysql服务win+x按a进入管理员cmd,输入netstopmysql(mysql是服务名,不清楚的可以在服务中查看)2.输入mysqld爆红进入mysql安装目录输入./mysqld--console--skip-grant-tables报错要加入数据目录地址,输入.\mysqld--console--datadir="D:\Deve......
  • Windows .md 右键新建添加md文件-Typora版
    前言全局说明Windows.md右键新建添加md文件一、说明1.1环境:Windows11家庭版23H222631.3737Typora0.11系统里要安装好Typora二、添加2.1regaddHKCR\.md/ve/dTypora.md/fTypora.md:代表.md文件关联Typora.mdregaddHKCR\.md\ShellNew/vNu......
  • 被裁不给交接时间当天就让滚蛋,离职后同组的领导同事反复微信电话问项目问题,还让一起拉
    作为一名程序员,遇到这样的情况,真的让人心情复杂。裁员不给交接时间,直接让你走人,心里难受不说,工作上的东西也没法好好交接。明明有些项目和代码还没完全梳理清楚,结果人家就直接让你走了。然后问题来了,离职后,前同事和领导还开始反复给你发微信,电话,甚至叫你拉群、开会讨论问题......
  • Advent Of Code 2024 Solution
    \[\Large\texttt{AdventOfCode2024}\]\(\texttt{Intro}\)这是一个从每年12月1日开始的为期25天的编程挑战,每天中午1pm会公布一道题。每道题会有两个部分,你需要用编程解决每一个部分。本文会使用C++,Javascript,Python进行编程。网址:https://adventofcode.com/20......
  • 微信小程序3-显标记信息和弹框
     感谢阅读,初学小白,有错指正。一、实现功能:在地图上添加标记点后,标记点是可以携带以下基础信息的,如标题、id、经纬度等。但是对于开发来说,这些信息还不足够,而且还要做到点击标记点时,能够显示出相关所有信息。这篇笔记就是分享点击一个已有图标,如何能够显示出相关信息的功能。......
  • el-upload上传多个文件,一次请求,Django接收
    1、:file-list="fileList"  :on-change="handleChange"将文件赋值到fileList2、 :auto-upload="false" 手动触发上传写个按钮点击执行这个this.$refs.upload.submit();3、自己写上传,不会再触发上传成功或失败回调4、 request.FILES.getlist('file')获取上传的多......
  • README
    AMG8833-Thermal-Camera此项目已经废弃,请查看新项目:KalamaArduinoNano+AMG8833+ST7735热成像仪本项目使用ArduinoIDE开发屏幕采用1.8'TFT屏幕(主控ST7735)热成像传感器为AMG8833展示:======================================================================本人第一......
  • jenkins在windows os中启动slave node的快捷方法
    如果你把一台windows服务器作为了某个jenkins的slavenode,如果slavenode不稳定,经常offline,那么你如何快速的启动这台windowslavenode呢?最简单粗暴的方式就是:1.远程连接windowsserver2.进入到放jenkinsslavejar包的路径中3.按照jenkinsnode中的执行slavejavajar包的......
  • 28 基于51单片机的两路电压检测(ADC0808)
    目录一、主要功能二、硬件资源三、程序编程四、实现现象一、主要功能基于51单片机,通过ADC0808获取两路电压,通过LCD1602显示二、硬件资源基于KEIL5编写C++代码,PROTEUS8.15进行仿真,全部资源在页尾,提供安装包。编辑三、程序编程#include <REGX52.H>#include "int......
  • vxe-table 使用 vxe-upload 在表格中实现非常强大的粘贴上传图片和附件
    看看vxe-table渲染器强大到什么地步;在开发需求中,经常会在表格列表中放入图片展示,例如头像、视频图片,附件列表等,但需要对表格批量操作是,会比较繁琐,那么有没有方便操作一点的放呢,肯定是有的;配合vxe-upload上传;比如复制或者截图一张图片,通过粘贴方式快速粘贴到单元格中,能支持单......