2015-10-06 56 views
0

你好,我是刚接触PowerShell并已成功导入超过400个用户使用csv文件。我的CSV文件中有一个输入错误,导致给定的名字是名字+姓氏,而不是用户的名字。我正在尝试更改“TestOU”OU中这些用户的名字。我正在寻找最简单的方法来完成此操作,只更改每个用户的给定名称,因为其他所有内容都是正确的。导入-csv通过电源外壳更改给定名称

服务器2012 R2 的用户位于CN =域用户,OU = testou,DC =学校,DC =本地

+0

'Get-ADUser -Filter * -SearchBase“OU = TestOU,DC = school,DC = local”| ForEach-Object {Set-ADUser -GiveName ...}'。您传递给“-GivenName”的内容取决于您CSV中的内容。 –

+0

谢谢亚历山大我会试试这个。我有我的csv文件设置像这样。容器/ OU,给定名称,姓氏,名称,显示名称,登录名,密码,sAMAccountName,DomainName “cn =域用户,ou = testou,dc = school,dc = local” – huerta

回答

2

差不多就是亚历山大说,只得到该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() 
} 

编辑:但是不可能在我看来,我要提醒你,如果用户有相同的名字和姓氏,并给定名称场只有他们的名字也将离开领域的空白。所以如果他们的名字是“Andrew Andrew”,那么'Andrew'是他们的名字和姓氏,并且GivenName字段当前被设置为'Andrew',它将会删除它。我想你可以在那里添加一些逻辑,以避免...

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

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

编辑2:你知道,如果你还有你的CSV你可以做到这一点更容易。修复你的GivenName列。删除除了一个和SAMAccountName列之外的所有列。那么你应该可以这样做:

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

OK我运行了你的命令,错误并将我返回到提示符,但我然后检查testou OU中的用户名并没有更改其名字。 – huerta

+0

好的,试试我的更新。这很简单,假设你仍然有你的CSV。如果你没有你的CSV ...为什么你会摆脱这样的事情,而这整个事情还在等待? – TheMadTechnician

+0

没有运气的人,用我的旧csv文件尝试了两种方法,修复了我的Givenname字段,只有每个人的名字并使用您的代码。如果我使用旧的users.csv文件,则会出现此错误:Set-ADUser:在'dc = school,dc = local'下找不到具有标识“first.lastname”的对象。在线:1个字符:66。如果我在我的csv中只使用Givenname选项卡,则会出现此错误:Set-ADUser:无法验证参数'Identity'的参数。参数为空。 – huerta