您好,登錄后才能下訂單哦!
寫了個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()
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。