需求描述:
超過十年行業(yè)經驗,技術領先,服務至上的經營模式,全靠網絡和口碑獲得客戶,為自己降低成本,也就是為客戶降低成本。到目前業(yè)務范圍包括了:成都網站設計、做網站,成都網站推廣,成都網站優(yōu)化,整體網絡托管,成都小程序開發(fā),微信開發(fā),App定制開發(fā),同時也可以讓客戶的網站和網絡營銷和我們一樣獲得訂單和生意!
因生產環(huán)境數據接口需求,需要對某時間段已上線用戶屬性進行批量互換,涉及字段EmployeeNumber,EmployeeID
環(huán)境信息:
Windows Server 2012 R2 ActiveDirectory
操作步驟:
PS.操作之初,建議先對當前環(huán)境屬性字段進行備份導出操作。
方法一:
1.過濾出某時間段創(chuàng)建帳戶信息,并導出域帳號EmployeeNumber,EmployeeID字段;
$date=Get-Date $oldday=(Get-Date).AddDays(-180) Get-ADUser -Filter * -Properties * -SearchBase "OU=Old,OU=Staff,DC=a,DC=com" |?{$_.whenCreated -le $date -and $_.whenCreated -ge $oldday} |` Select-Object name,samaccountname,userPrincipalName,EmployeeNumber,EmployeeID | ` Export-Csv C:\New0505.csv -Encoding UTF8 -NoTypeInformation
2.將表格數據進行按需調整,去掉ID字段為空的用戶信息,并保存CSV文本格式為utf8
3.執(zhí)行導入用戶信息操作,并查看當前各字段對應信息屬性
Import-Csv 'C:\New0505.csv' | select SamAccountName,EmployeeNumber,EmployeeID
4.如信息無誤,執(zhí)行批量替換操作
4.1如ID與Number字段位置無調整,執(zhí)行如下命令:
Import-Csv 'C:\New0505.csv' | ForEach-Object { Set-ADUser -Identity $_.SamAccountName -EmployeeNumber $_.EmployeeID -EmployeeID $_.EmployeeNumber }
4.2如ID與Number字段已調整,則按照正常替換格式替換,執(zhí)行如下命令:
Import-Csv 'C:\New0505.csv' | ForEach-Object { Set-ADUser -Identity $_.SamAccountName -EmployeeNumber $_.EmployeeNumber -EmployeeID $_.EmployeeID }
查看替換后屬性字段信息
Import-Csv 'C:\New0505.csv' | ForEach-Object { get-ADUser -Identity $_.SamAccountName -Properties * |select SamAccountName,EmployeeNumber,EmployeeID }
5.完成替換操作
方法二:
PS.如當前環(huán)境中數據均無須調整,可直接執(zhí)行替換操作,具體如下:
1.以OU為例介紹,查看當前OU下用戶相關屬性:
Get-ADUser -SearchBase "OU=Old,OU=Staff,DC=a,DC=com" -Filter * -Properties * |select SamAccountName,EmployeeNumber,EmployeeID
2.執(zhí)行批量互換當前屬性操作:
Get-ADUser -SearchBase "OU=Old,OU=Staff,DC=a,DC=com" -Filter * -Properties * |select SamAccountName,EmployeeNumber,EmployeeID |ForEach-Object { Set-ADUser -Identity $_.SamAccountName -EmployeeNumber $_.EmployeeID -EmployeeID $_.EmployeeNumber }
3.再次查看當前OU下用戶屬性,發(fā)現用戶屬性已變更完成。
Get-ADUser -SearchBase "OU=Old,OU=Staff,DC=a,DC=com" -Filter * -Properties * |select SamAccountName,EmployeeNumber,EmployeeID
綜合:對方法一腳本進行優(yōu)化操作,批量互換某時間段用戶屬性字段信息:
$date=Get-Date $oldday=(Get-Date).AddDays(-180) Get-ADUser -Filter * -Properties * -SearchBase "OU=Old,OU=Staff,DC=a,DC=com" |?{$_.whenCreated -le $date -and $_.whenCreated -ge $oldday} |` Select-Object name,samaccountname,userPrincipalName,EmployeeNumber,EmployeeID | forEach-Object { Set-ADUser -Identity $_.SamAccountName -EmployeeNumber $_.EmployeeID -EmployeeID $_.EmployeeNumber }
完成本次需求操作。