2017-04-05 152 views
2

我想通過EmployeeID更新用戶AD屬性,而不是他們的SAMAccountName。我試過使用Set-ADUser,但它不起作用,因爲我給出的列表不包含帳戶sAMAccountName,因爲它來自無法訪問此信息的HR。如何使用Powershell根據員工ID修改Active Directory用戶屬性?

有沒有辦法通過其唯一的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

您只需要通過使用get-aduser並根據EmployeeID過濾結果,然後將其傳送到set-aduser來獲得代表AD中用戶的對象。例如:

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已經加載),並創建值爲$User的對象。然後我們可以在Set-ADUser中引用$ User的屬性(使用。符號)來獲取我們需要的屬性的值。

+0

我發佈了我的問題的更新。 – IcyPunch

+0

您應該編輯您的問題並將其添加到那裏,而不是將其作爲答案發布。我會根據新信息修改我的答案,我認爲'ForEach'循環會更簡單/更清晰。 –

+0

我已經修改了我的答案,使用基於您提供的CSV頭的'ForEach'。我還通過匹配'-filter'參數而不是使用'where'來簡化我們獲取用戶的方式。 –

相關問題