在前面文章中介紹過一篇文章,主要講的是"關於Exchange Server 2010 啓用郵箱時MMC控制檯崩潰問題處理"方法,其中排錯思路中也提到過是因爲批量建立賬號過程當中部分字段帶空格致使的,其實這個是不可以徹底避免的,因爲畢竟是人工操做出現錯誤再所不免,徹底解決導入數據不帶空格實際上是有辦法的。運維
方法一:經過Excel的替換將空格去掉。ide
方法二:利用Excel中的SUBSTITUTE函數法去掉。函數
方法三:利用Excel中的CLEAN函數去掉。spa
固然上述都是須要運維人員對Excel中函數或替換比較瞭解的狀況下能夠很容易規避,有沒有辦法可以讓不懂Excel的人也能夠正常運行腳本而不會由於空格而出現建立賬號異常?那麼我就要介紹「方法四」經過在PowerShell腳本中增長相關的字段來在運行時就去掉空格。rest
腳本以下:
orm
import-Module activedirectoryblog
$csvpath = "d:\New-User\Employee.csv"ip
(Get-Content -Path $csvpath) -replace "\s{1,}" | Set-Content -Path $csvpath -Encoding UTF8ci
$pwd = convertto-Securestring "cc@123.com" -AsPlainText -Force
get
Import-Csv 'd:\New-User\Employee.csv'| foreach {New-ADUser -path $_.path -SamAccountName $_.SamAccountName -Name $_.Name -DisplayName $_.DisplayName -GivenName $_.GivenName -Surname $_.Surname -AccountPassword $pwd -Manager $_.Manager -UserPrincipalName $_.UserPrincipalName -Enabled $true -ChangePasswordAtLogon $true -PassThru}
Import-Csv 'd:\1\userinfo.csv'| foreach {Add-ADGroupMember -Identity $_.group1 -Members $_.SamAccountName}
注意,在上述腳本中增長了「-replace "\s{1,}"來確保導入的CSV文件空格被去掉」,而若是沒有進行腳本修改的狀況下,腳本內容以下:
import-Module activedirectory
$csvpath = "d:\New-User\Employee.csv"
(Get-Content -Path $csvpath) | Set-Content -Path $csvpath -Encoding UTF8
$pwd = convertto-Securestring "cc@123.com" -AsPlainText -Force
Import-Csv 'd:\New-User\Employee.csv'| foreach {New-ADUser -path $_.path -SamAccountName $_.SamAccountName -Name $_.Name -DisplayName $_.DisplayName -GivenName $_.GivenName -Surname $_.Surname -AccountPassword $pwd -Manager $_.Manager -UserPrincipalName $_.UserPrincipalName -Enabled $true -ChangePasswordAtLogon $true -PassThru}
Import-Csv 'd:\1\userinfo.csv'| foreach {Add-ADGroupMember -Identity $_.group1 -Members $_.SamAccountName}
至於爲什麼會在這裏專門介紹這個內容,主要仍是一點運維過程當中,咱們既然沒法保證全部人都能記得和會去運行Excel來去掉空格,那麼爲什麼不在腳本運行過程當中就去掉,來提升腳本執行的正確率?
以上腳本還請你們借鑑使用,若有更優秀的去除方法,還請你們分享哦,謝謝你們。