Powershell-批量互換域用戶屬性信息

需求描述:微信

因生產環境數據接口需求,須要對某時間段已上線用戶屬性進行批量互換,涉及字段EmployeeNumber,EmployeeIDide

環境信息:優化

Windows Server 2012 R2 ActiveDirectoryspa

操做步驟:orm

PS.操做之初,建議先對當前環境屬性字段進行備份導出操做。blog

方法一:接口

1.過濾出某時間段建立賬戶信息,並導出域賬號EmployeeNumber,EmployeeID字段;ip

$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

clip_image001

2.將表格數據進行按需調整,去掉ID字段爲空的用戶信息,並保存CSV文本格式爲utf8ci

3.執行導入用戶信息操做,並查看當前各字段對應信息屬性get

Import-Csv 'C:\New0505.csv' | select SamAccountName,EmployeeNumber,EmployeeID

4.如信息無誤,執行批量替換操做

4.1如ID與Number字段位置無調整,執行以下命令:

Import-Csv 'C:\New0505.csv' | ForEach-Object { Set-ADUser -Identity $_.SamAccountName -EmployeeNumber $_.EmployeeID -EmployeeID $_.EmployeeNumber }

4.2如ID與Number字段已調整,則按照正常替換格式替換,執行以下命令:

Import-Csv 'C:\New0505.csv' | ForEach-Object { Set-ADUser -Identity $_.SamAccountName -EmployeeNumber $_.EmployeeNumber -EmployeeID $_.EmployeeID }

clip_image002

查看替換後屬性字段信息

Import-Csv 'C:\New0505.csv' | ForEach-Object { get-ADUser -Identity $_.SamAccountName -Properties * |select SamAccountName,EmployeeNumber,EmployeeID }

5.完成替換操做



方法二:

PS.如當前環境中數據均無須調整,可直接執行替換操做,具體以下:

1.以OU爲例介紹,查看當前OU下用戶相關屬性:

Get-ADUser -SearchBase "OU=Old,OU=Staff,DC=a,DC=com" -Filter * -Properties * |select SamAccountName,EmployeeNumber,EmployeeID

2.執行批量互換當前屬性操做:

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下用戶屬性,發現用戶屬性已變動完成。

Get-ADUser -SearchBase "OU=Old,OU=Staff,DC=a,DC=com" -Filter * -Properties * |select SamAccountName,EmployeeNumber,EmployeeID

clip_image003


綜合:對方法一腳本進行優化操做,批量互換某時間段用戶屬性字段信息:

$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 }

clip_image004

完成本次需求操做。

歡迎關注微信公衆號:小溫研習社

歡迎關注yanxishe.png

相關文章
相關標籤/搜索