【问题标题】:Import -csv to change givenname through power shell导入 -csv 以通过 powershell 更改给定名称
【发布时间】:2016-01-03 17:26:22
【问题描述】:

您好,我是 powershell 新手,已经使用 csv 文件成功导入了 400 多个用户。我的 CSV 文件中有一个拼写错误,导致给定名称是名字+姓氏,而不仅仅是用户的名字。我正在尝试更改“TestOU”OU 中这些用户的名字。我正在寻找最简单的方法来做到这一点,只需更改每个用户的名字,因为其他一切都是正确的。

服务器 2012 R2 用户位于cn=domain users,ou=testou,dc=school,dc=local

【问题讨论】:

  • Get-ADUser -Filter * -SearchBase "OU=TestOU,DC=school,DC=local" | ForEach-Object { Set-ADUser -GiveName ... }。您传递给 -GivenName 的内容取决于 CSV 中的内容。
  • 谢谢 Alexander 我会试试这个。我有这样的 csv 文件设置。容器/OU,Givenname,Surname,Name,DisplayName,Logon Name,Password,sAMAccountName,DomainName "cn=Domain Users,ou=testou,dc=school,dc=local"

标签: powershell csv import


【解决方案1】:

几乎是 Alexander 所说的仅获取该 OU 中的用户...

Get-ADUser -Filter * -SearchBase ",OU=TestOU,DC=school,DC=local" 

然后,您可以通过从中删除姓氏并修剪多余的尾随空格来计算 GivenName 应该是什么。

Get-ADUser -Filter * -SearchBase ",OU=TestOU,DC=school,DC=local" | ForEach-Object { 
    $Given = $_.GivenName -replace $_.SurName
    $_ | Set-ADUser -GiveName $Given.Trim()
}

编辑:无论在我看来这不太可能,我应该警告您,如果用户的名字和姓氏相同,并且 GivenName 字段只有他们的名字,它将将该字段留空。因此,如果他们的名字是“Andrew Andrew”,其中“Andrew”是他们的名字和姓氏,并且 GivenName 字段当前设置为“Andrew”,它将删除它。我想你可以在其中添加一些逻辑来避免这种情况......

If(!([string]::IsNullOrEmpty($Given.Trim()))){
    $_ | Set-ADUser -GivenName $Given.Trim()
}

我想应该这样做,以避免出现空白的 GivenName 字段。

Edit2:你知道,如果你还有你的 CSV,你可以更容易地做到这一点。修复您的 GivenName 列。删除除该列和 SAMAccountName 列之外的所有列。那么你应该能够做到:

Import-CSV 'C:\Path\To\File.csv' | ForEach{ Set-ADUser $_.samaccountname -GivenName $_.GivenName }

【讨论】:

  • 好的,我运行了你的命令,它完成了,没有错误并返回到提示符,但我随后检查了 testou OU 中的用户名,并且没有更改他们的名字。
  • 好的,试试我的更新。它更简单,假设你仍然有你的 CSV。如果你没有你的 CSV……你为什么要在整个事情还在等待中的时候摆脱这样的事情?
  • 运气不好,尝试了两种方法,使用我的旧 csv 文件,将我的 Givenname 字段修复为仅包含每个人的名字并使用您的代码。如果我使用旧的 users.csv 文件,我会收到此错误:Set-ADUser:在“dc=school,dc=local”下找不到标识为“first.lastname”的对象。在行:1 字符:66。如果我在 csv 中仅使用 Givenname 选项卡,我会收到此错误:Set-ADUser: cannot validate argument on parameter 'Identity'。参数为空。
  • 您的用户名格式是否为firstname.lastname?例如,用户会使用 school\jim.anderson?还是他们的登录名更像school\jande
  • 是的,他们用于登录的用户名是:domain\firstname.lastname。显示名称是名字姓氏(名称之间有空格)。
猜你喜欢
  • 2021-08-02
  • 2020-10-13
  • 2021-04-02
  • 1970-01-01
  • 2014-02-04
  • 2021-09-02
  • 1970-01-01
  • 2011-05-12
  • 2021-10-10
相关资源
最近更新 更多