如何使用Powershell根据员工ID修改Active Directory用户属性?

时间:2017-04-05 08:19:29

标签: powershell

我正在尝试通过EmployeeID更新用户的AD属性,而不是他们的SAMAccountName。我已尝试使用Set-ADUser,但它无效,因为我提供的列表中不包含帐户sAMAccountName,因为它来自无权访问此信息的人力资源。

有没有办法通过独特的employeeID

更新AD用户属性

我的源数据.csv文件包含以下内容:

EmployeeID;company;department;title;country;postalCode;city;streetAddress;manager
2828;TEST1;TEST2;TestXENUser;DE;12345;MUE;Miller Street 6;chrtest

我的脚本如下所示:

$Users = Import-CSV C:\05042017\data.csv

$Users | ForEach-Object {

    $EmpID = $_.EmployeeID

    Get-ADUser -Filter "*" -Property EmployeeID | Where {$_.EmployeeID -eq $EmpID} | Set-ADUser -company $EmployeeID.company -department $EmployeeID.department –title $EmployeeID.title –country $EmployeeID.country –postalCode $EmployeeID.postalCode –city $EmployeeID.city –streetAddress $EmployeeID.streetAddress –manager $EmployeeID.manager -WhatIf
}

我不认为我已正确地在Set-ADUser命令之后建立了与属性的连接。我自己测试了一些东西,但我似乎无法让它工作。

如何告诉Set-ADUser命令从.csv文件中获取属性? 我过去一直在使用它,但它是这样的:ForEach $user in $Users而不是:ForEach-Object

1 个答案:

答案 0 :(得分:1)

您只需使用get-aduser获取一个代表AD中用户的对象,并根据EmployeeID过滤结果,然后将其传递给set-aduser。例如:

Get-ADUser -Filter "employeeid -eq '$EmpID'" | Set-ADUser <-Attribute> <Value> -WhatIf

您显然需要确定属性和值,并在您感到满意的时候移除-whatif开关。

根据您的CSV文件包含:

  

雇员;公司;部门;标题;国家;邮政编码;市;街道地址;管理器

你可以这样做:

$Users = Import-CSV C:\05042017\data.csv -Delimiter ';'

ForEach ($User in $Users) {
    Get-ADUser -Filter "employeeid -eq '$($User.EmployeeID)'" | Set-ADUser -company $User.company -department $User.department –title $User.title –country $User.country –postalCode $User.postalCode –city $User.city –streetAddress $User.streetAddress –manager $User.manager -WhatIf
}

在上面的示例中,我们使用ForEach循环处理CSV文件中的每一行(我们已将其加载到$Users)并创建值为{{的对象1}}。然后,我们可以在$User中为$ User(带有。符号)的属性引用我们需要的属性值。