从CSV数据配置AD用户不起作用

时间:2015-10-02 12:08:04

标签: powershell csv active-directory

我有一个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}}

1 个答案:

答案 0 :(得分:0)

您的Get-AdUserSet-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包含CompanyCountryDepartmentOfficePhone的标题,则应该可以这样做。我也在假设你有如何识别用户列。现在猜测它是username