千家信息网

powershell自动化结合数据库,处理员工离职(AD账号

发表于:2024-11-24 作者:千家信息网编辑
千家信息网最后更新 2024年11月24日,写了个powershell来针对离职的自动化执行。结合mssql数据库的目的是更自动化,并保存一些用户信息到数据库中powershell代码可手动执行,也可计划任务执行数据库(以下我所用的方法,不能直
千家信息网最后更新 2024年11月24日powershell自动化结合数据库,处理员工离职(AD账号

写了个powershell来针对离职的自动化执行。
结合mssql数据库的目的是更自动化,并保存一些用户信息到数据库中
powershell代码可手动执行,也可计划任务执行

数据库(以下我所用的方法,不能直接套用)
主要3张表
员工表Userlist记录员工在离职状态,加触发器,当是否离职状态改变自动加入离职员工表leftuser中
离职员工表leftuser结构如下,前提有工号和ad账号的对应关系表
离职用户所在组表leftusergroup,记录离职用户之前所在的组。

CREATE TABLE [dbo].[leftUser](    [lid] [int] NULL,                      ---i    [wid] [varchar](3) NULL,        --工号    [workStatus] [bit] NULL,        --是否离职    [aduser] [nvarchar](5) NULL     --ad账号) ON [PRIMARY]GO

Powershell代码

#################Author:rp722#version:6#################配置信息$Database   = 'DatabaseUserName'$Server     = '"ipaddress"'$UserName   = 'sa'$Password   = 'password'#创建连接对象$SqlConn = New-Object System.Data.SqlClient.SqlConnection#使用账号连接MSSQL$SqlConn.ConnectionString = "Data Source=$Server;Initial Catalog=$Database;user id=$UserName;pwd=$Password"#打开数据库连接$SqlConn.open()#查询数据库,获取当前离职用户表中用户数量$SqlCmd = $SqlConn.CreateCommand()$SqlCmd.commandtext = 'select COUNT(aduser) from leftUser'$num=$SqlCmd.ExecuteScalar()#遍历用户for($i=1;$i -le $num;$i++){$SqlCmd = $SqlConn.CreateCommand()$SqlCmd.commandtext = "select aduser from leftUser where lid=$i"$user=$SqlCmd.ExecuteScalar()#获取用户$aduser=Get-ADUser -Identity $user#判断用户在AD中是否启用,若已禁用则跳过if ($aduser.enabled -eq $True){#获取用户所在组$groups=(get-aduser $user -properties memberof).memberof#遍历各组foreach($gp in $groups){#获取组的名称$gp1=$gp.Split(",")[0].Split("=")[1]#保存用户和组的对应关系到数据库$SqlCmd = New-Object System.Data.SqlClient.SqlCommand$SqlCmd.connection = $SqlConn$SqlCmd.commandtext = "insert into dbo.leftusergroup(aduser,gname) values('$user','$gp1')"$SqlCmd.ExecuteNonQuery()#当前组内移除用户remove-adgroupmember -Identity $gp -Members $user -Confirm:$false}#设置备注set-aduser $aduser -Description "user has left company"#已至禁用组Move-ADObject $aduser -TargetPath "OU=Disabled,DC=xxxx,DC=net"#禁用账户Disable-ADAccount $aduser}}#关闭数据库连接$SqlConn.close()
0