【问题标题】:Active Directory - Filling in unique ID by scriptActive Directory - 通过脚本填写唯一 ID
【发布时间】:2017-12-04 02:17:14
【问题描述】:

我想在 Active Directory 中填写我们用户的“employeeID”或“uid”,并带有一个序号。我唯一做的就是将用户导出到 CSV 文件中:

Get-ADUser -Filter "mail -like '*com'" | Export-Csv 'C:\ADUser.csv' -NoType

有人知道我该怎么做吗?

【问题讨论】:

  • HR 没有强制要求员工 ID?那有什么用呢?
  • HR 员工 ID 在另一个应用程序中 - 这是我们的问题。我设置了一个 LDS 并将所有用户同步到 LDS 实例。所以我需要用我们的 WSO2 身份服务器所需的唯一 ID 填写任何属性(employeeID、uid 或其他自行创建的属性)。
  • 我会查看当前保存“HR”员工 ID 的应用程序,看看是否可以将其设置为将其同步到 AD。

标签: powershell active-directory ldap windows-server-2008-r2


【解决方案1】:

这会将所有用户的 EmployeeID 字段设置为从 1 开始顺序的数字:

Get-ADUser -Filter "mail -like '*com'" | ForEach-Object -Begin {$UserID = 1} {
    Set-ADUser $_ -EmployeeID $UserID -WhatIf
    $UserID++
}

如果-WhatIf 参数看起来符合您的要求,请删除它。请注意,它可能会替换所有这些用户的任何现有值,并且它不考虑域中其他用户对象可能具有相同 ID 的可能性(因为您已过滤到具有电子邮件地址的用户)。

如果你想在最后输出一个 CSV 输出结果,你可以进一步这样做:

Get-ADUser -Filter "mail -like '*com'" | ForEach-Object -Begin {$UserID = 1} {
    Set-ADUser $_ -EmployeeID $UserID -WhatIf
    $UserID++

    Get-ADUser $_ -Properties Samaccountname,EmployeeID | Select Samaccountname,EmployeeID        
} | Export-Csv 'C:\ADUser.csv' -NoType

【讨论】:

  • 这看起来很有帮助,我会检查的。谢谢。
  • 这是我得到的:Set-ADUser:找不到接受参数“1++”的位置参数。在 line:1 char:90 + Get-ADUser -Filter "mail -like '*com'" | ForEach-Object -Begin {$UserID = 1} { Set-ADUser -employeeID $UserID -WhatIf $UserID++ } + CategoryInfo : InvalidArgument: (:) [Set-ADUser], ParameterBindingException + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.ActiveDirectory.Management.Commands.SetADUser_
  • 看起来您将$UserID++ 放在Set-ADUser 行的末尾,而不是新行。
  • 我在“-WhatIf”之后有很多退格,这就是问题所在。下一个报告是:如果:在目标“CN=...”上执行操作“设置”并且没有“-WhatIf”:我没有收到任何错误或报告,但它什么也没发生.
  • 是否有任何内容写入 CSV?
猜你喜欢
  • 2011-10-04
  • 1970-01-01
  • 2015-10-20
  • 2023-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-06
相关资源
最近更新 更多