You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过PowerShell结合带日期参数的CSV自动启用/禁用AD用户

AD用户强制启用日期实现方案说明

两种实现方式都可以落地,你可以根据自己的权限和场景选择:

方案1:纯脚本逻辑实现(无需修改AD架构,适合新手快速验证)

你不需要新增任何AD属性,直接把每个用户的启用/禁用日期存在CSV文件中,脚本执行时直接比对当前日期和CSV中的日期字段即可触发对应操作,逻辑如下:

  • 前置要求:提前安装RSAT-AD-PowerShell模块,域账号拥有修改AD用户状态的权限
  • CSV文件至少包含3个字段:samAccountName(用户登录名)、enableDate(强制启用日期,格式建议统一为yyyy-MM-dd)、disableDate(强制禁用日期,格式同上)
  • 脚本可直接配置到Windows任务计划,每天定点执行一次即可自动完成操作

示例脚本:

# 导入AD模块
Import-Module ActiveDirectory

# 读取CSV文件,替换为你实际的文件路径
$userList = Import-Csv -Path "C:\ADUserManage\user_list.csv"
$currentDate = Get-Date -Format "yyyy-MM-dd"

foreach ($user in $userList) {
    # 匹配启用日期,执行启用操作
    if ($user.enableDate -eq $currentDate) {
        Enable-ADAccount -Identity $user.samAccountName
        Write-Host "已启用用户:$($user.samAccountName)"
    }
    # 匹配禁用日期,执行禁用操作
    if ($user.disableDate -eq $currentDate) {
        Disable-ADAccount -Identity $user.samAccountName
        Write-Host "已禁用用户:$($user.samAccountName)"
    }
}

该方案优缺点:

  • 优点:不需要修改AD架构,不需要最高级的域管理员权限,实现成本低,适合刚入门的场景
  • 缺点:需要长期维护CSV文件,无法直接在AD用户属性中查看对应日期规则

方案2:扩展AD自定义属性存储日期(适合企业级统一管理场景)

如果你需要把日期规则和AD用户绑定,不需要依赖CSV文件,可以申请AD架构管理员权限,新增两个自定义的日期类型AD属性(比如customEnableDate、customDisableDate)绑定到用户类,后续直接把日期值写入对应用户的属性即可。

示例脚本:

# 第一步:把CSV中的日期写入AD用户自定义属性
Import-Module ActiveDirectory
$userList = Import-Csv -Path "C:\ADUserManage\user_list.csv"
foreach ($user in $userList) {
    Set-ADUser -Identity $user.samAccountName -Replace @{
        customEnableDate = [DateTime]::Parse($user.enableDate).ToFileTime()
        customDisableDate = [DateTime]::Parse($user.disableDate).ToFileTime()
    }
}

# 第二步:后续执行启用禁用操作无需再读取CSV,直接拉取AD属性比对即可
$currentDate = Get-Date
Get-ADUser -Filter * -Properties customEnableDate,customDisableDate | ForEach-Object {
    # 处理启用逻辑
    if ($null -ne $_.customEnableDate -and [DateTime]::FromFileTime($_.customEnableDate).Date -eq $currentDate.Date) {
        Enable-ADAccount -Identity $_
    }
    # 处理禁用逻辑
    if ($null -ne $_.customDisableDate -and [DateTime]::FromFileTime($_.customDisableDate).Date -eq $currentDate.Date) {
        Disable-ADAccount -Identity $_
    }
}

该方案优缺点:

  • 优点:日期规则和用户绑定,无需维护CSV,可直接在AD用户属性中查看修改规则
  • 缺点:需要修改AD架构,操作有一定风险,需要架构管理员权限

新手优先选择方案1即可,无需改动AD环境,先把核心逻辑跑通之后再根据需求优化即可

内容的提问来源于stack exchange,提问作者sebas24

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 00:21:01