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

AD用户Description字段添加入职日期的PowerShell脚本报错排查

批量为AD用户Description字段添加随机入职日期

问题根源

  1. 筛选器未指定:Get-ADUser默认需要筛选条件,你没加-Filter *,所以系统会提示输入筛选器,这就是你被要求输入用户名的原因。
  2. 语法错误:
    • 属性调用写错:$._description应该是$_.Description;
    • 代码语句未分隔:$desc = ...和Set-ADUser在同一行,PowerShell无法识别;
    • 字符串拼接不符合要求:没有按照「年龄, 入职日期」的格式添加分隔符。
  3. 随机日期复用:原脚本只生成一次随机日期,所有用户会被设置成同一个入职日期,不符合需求。

修正后的脚本

# 定义入职日期的范围
$StartDate = Get-Date -Date "2015-01-01"
$EndDate = Get-Date -Date "2022-11-11"
$totalDays = ($EndDate - $StartDate).Days

# 获取所有AD用户,并遍历更新Description字段
Get-ADUser -Filter * -Properties Description | ForEach-Object {
    # 为当前用户生成独立的随机日期
    $randomDays = Get-Random -Minimum 0 -Maximum ($totalDays + 1)
    $randDate = $StartDate.AddDays($randomDays).ToString("yyyy-MM-dd") # 统一日期格式

    # 按照要求拼接新的Description内容
    $newDescription = "$($_.Description), $randDate"

    # 更新用户的Description字段
    Set-ADUser $_.Identity -Description $newDescription
}

关键说明

  • 遍历所有用户:-Filter *参数会获取域内所有AD用户,无需手动输入筛选条件;
  • 独立随机日期:把随机日期生成逻辑放到循环里,每个用户都会得到唯一的入职日期;
  • 格式规范:用ToString("yyyy-MM-dd")统一日期显示格式,拼接时保留原年龄并添加逗号+空格的分隔符;
  • 语法修正:修复了属性调用错误,拆分了合并的代码语句,确保脚本符合PowerShell语法要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 09:35:23