我有一个CSV文件,想要使用以下代码
将其数据导入我的AD用户SamAccountName sn GivenName Mobile OfficePhone LastLogonDate Country DistinguishedName CanonicalName
michel michel 31612216347 31299471685 9/22/2015 7:27:10 AM NL CN=michel,OU=Vworkspace,DC=remote,DC=sojab0on,DC=nl remote.sojab0on.nl/Vworkspace/michel
joey De Graaf Joey 31643286869 31299471685 9/16/2015 8:41:17 AM NL CN=Joey De Graaf,OU=Vworkspace,DC=remote,DC=sojab0on,DC=nl remote.sojab0on.nl/Vworkspace/Joey
nick van Vuren Nick 31653581899 31299471685 NL CN=Nick van Vuren,OU=Vworkspace,DC=remote,DC=sojab0on,DC=nl remote.sojab0on.nl/Vworkspace/Nick van Vuren
它不会抛出错误,但也不会放入选定的字段
原始csv数据
{{1}}
答案 0 :(得分:0)
您的Get-AdUser
和Set-AdUser
在您显示的代码中无法协同工作。在其基本形式中,您需要将Get-ADUser
的输出用于Set-AdUser
。此外,更重要的是,您没有在代码中的任何位置使用CSV数据,因此您不会在这方面进行任何更改。一个小问题是您要将所有用户调用两次。首先为文件中的每个用户提供一次所有用户。继续前进,如果我们在这里考虑到失败的可能性,如果用户不存在则会更好。当您不使用该信息时,也不需要-Properties *
。我们后来了解到,您的文件实际上是以制表符分隔的,因此我们需要考虑到这一点
!所以让我们尝试不同的方法。
Import-Module ActiveDirectory
$CSV = Import-Csv C:\Users\Administrator\Desktop\All_users_list.csv -Delimiter ";"
$OU = "OU=Vworkspace,DC=remote,DC=sojab0on,DC=nl"
foreach($user in $CSV)
{
$singleADUser = Get-ADUser -Identity ($user.samaccountname) -SearchBase $OU -ErrorAction SilentlyContinue
if($singleADUser){
$singleADUser | Set-ADUser -Company $($user.Company) -Country $($user.Country) -Department $($user.Department) -OfficePhone $($user.OfficePhone)
}
}
我们检查csv文件中的每个用户是否与目录匹配。如果找到匹配项,我们会更新所需的属性。假设$CSV
包含Company
,Country
,Department
和OfficePhone
的标题,则应该可以这样做。我也在假设你有如何识别用户列。现在猜测它是username
。