【问题标题】:Set-ADUser: Set Active Directory Users Attribute Data via PowershellSet-ADUser:通过 Powershell 设置 Active Directory 用户属性数据
【发布时间】:2017-06-29 03:19:52
【问题描述】:

我是 AD 新手 - 通过 Powershell 进行自动化,尽管由于某种原因我设法在我们的 OU 中批量修改/更新我们的 AD 用户的位置,但我在复制基于我们的 OU 的脚本时遇到了困难现场办公。

我希望我在这里说得通,但这可能会帮助您回答或帮助我。这是我的脚本:

Import-Module ActiveDirectory  

$Users = Import-Csv -Delimiter "," -Path "c:\scripts\van.csv"

Get-ADUser -Filter 'DisplayName -like "*"' | Set-ADUser -Replace @{PhysicalDeliveryOfficeName="Van Nuys"}

当我在 Powershell 上运行此脚本时,发生的情况是它改变了用户在我们的 OU 中的位置,而不是基于 Van Nuys。我拥有的 csv 文件具有 DisplayName、Title 和 Office 以及每个用户的相应信息。但我不知道为什么它会改变我们 OU 中的用户。

我希望你能帮助我。

真诚地, 唱片

【问题讨论】:

  • 您没有在任何地方使用您的 $users 变量...您正在抓取 AD 中的每个用户并设置他们的办公地点。
  • 我应该用什么脚本来更新仅在 csv 文件中列出的用户的属性?

标签: powershell active-directory


【解决方案1】:

假设您的 CSV 具有 sAMAccountName,并且您希望所有用户都更新为 Van Nuys,这样的事情会起作用。

Import-Module ActiveDirectory  

$Users = Import-Csv -Delimiter "," -Path "c:\scripts\van.csv"

foreach($user in $users)
{
 Set-ADUser -Identity $user.samaccountname -Replace @{PhysicalDeliveryOfficeName="Van Nuys"}
}

如果您真的只有他们的显示名称,您可以尝试将其修改为此,但由于它不是唯一标识符,如果它有效,您将非常幸运。

foreach($user in $users)
{
 Get-aduser -filter {DisplayName -like $user.Displayname} |Set-ADUser -Replace @{PhysicalDeliveryOfficeName="Van Nuys"}
}

【讨论】:

  • 我会试试这个。会及时通知您。
  • 如果我只有 DisplayName 会起作用吗?我只有他们的名字。
  • 查看我的编辑。您可以尝试使用显示名称,但由于它不是唯一的,它很有可能会在相当多的用户上失败。
  • 非常感谢您的分享。我会试试的。但我认为我需要一个脚本,它可以让我获得特定 Ou 的批量 samaccount 名称。 :)
  • Get-aduser 是命令,然后指定 ou 并指定 -property samaccountname
猜你喜欢
  • 1970-01-01
  • 2021-08-26
  • 1970-01-01
  • 2018-04-08
  • 2017-11-16
  • 2018-07-31
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
相关资源
最近更新 更多