温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2020-03-03 01:34:05 来源:网络 阅读:551 作者:rp722 栏目:系统运维

写了个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()
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI