【问题标题】:Update Job Titles in AD via PowerShell通过 PowerShell 更新 AD 中的职位
【发布时间】:2018-08-09 10:17:50
【问题描述】:

我有以下脚本来更新 AD 中其个人资料“组织”下的用户“职位”

Import-CSV -Path C:\UsersTestv1.CSV | Foreach-Object {
#properties from the csv
$user  = $_.user
$title = $_.title
Get-ADUser -$user | Set-ADUser -Title "$title"
}

我直接在盒子上运行这个没有用

使用 test 的 CSV 文件设置如下:user,title,test.user,Test Script, CSV File Snip

但是,这并没有更新必填字段(我有超过 400 个用户要更新)

如果我运行以下命令:set-aduser "test.user" -Title "Example"

必填字段成功更新!

我在原始脚本中做错了什么,我认为它应该循环遍历 CSV 的每个条目并执行上述操作:(

非常感谢任何帮助

【问题讨论】:

  • Get-ADUser -$user -> Get-ADUser $user
  • 请不要告诉我这是唯一的错误:(!!!
  • 只是提醒一下,因为您似乎对此很陌生,所以当您在生产环境中测试您的命令/脚本时,请始终使用-WhatIf。这对于保护您在测试期间避免可能出现的拼写错误/错误命令非常有帮助。

标签: powershell automation active-directory


【解决方案1】:

您可以稍微缩短脚本。只要您的 csv 包含“用户”和“标题”行,用户存在并且您拥有适当的权限,下面的脚本应该可以工作:

Import-CSV -Path C:\UsersTestv1.CSV | Foreach-Object {
    Set-ADUser -Identity $_.user -Title $_.title
}

【讨论】:

  • 谢谢,上面实际上没有错误或工作,我改为: Import-CSV -Path C:\UsersTestv1.CSV | Foreach-Object { Set-ADUser -Identity "$_.user" -Title "$_.title" } 也无济于事:( 变得非常沮丧大声哭泣
  • 如果你在这种情况下使用引号( " ),你需要这样写变量: -Identity "$($_.user)" -Title "$($_.title)" .
  • 有道理,但我不明白为什么缩短脚本不会出错或此时执行命令
  • 我已经冒险:Import-CSV -Path C:\UsersTestv1.CSV | Foreach-Object { #properties from the csv $user = $_.user $title = $_.title Set-ADUser -identity $_.user -Description $._title -Title $_.title } 仍然无济于事,我感觉 Set-ADUser -Identity 存在问题,但不知道原因
  • 我现在会读,但我已经解决了我什至不认为标题需要在单独的行上有效的最终代码:Import-CSV -Path C:\UsersTestv1.CSV | Foreach-Object { Set-ADUser -Identity $_.user -Title $_.title } 感谢大家的帮助和帮助;我正在尽我所能学习,并希望能像你们中的大多数人一样乐于助人:)
猜你喜欢
  • 2020-06-01
  • 2018-12-21
  • 1970-01-01
  • 1970-01-01
  • 2014-05-17
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 2018-11-23
相关资源
最近更新 更多