2016-10-14 24 views
1

我有一個只包含兩列的CSV文件 - 用戶名和說明。使用用戶名作爲唯一標識符更新用戶「描述」字段的PowerShell腳本

如果用戶名在此CSV中,我想更新AD中的用戶'Description「字段。

造成這種情況的僞代碼會是這樣的:

foreach(Row in CSV) { 
    if(Row[username] exists in AD) { 
     ThisADAccount[Description] = Row[description] 
    } 
} 

但坦率地說,我不知道該怎麼做在PowerShell中!

此外,與此同時,我想通過設置[email protected]來更新這些用戶的E-mail字段。造成這種情況的僞代碼將是:

foreach(User in AD) { 
    ThisADAccount[E-mail] = ThisADACcount[Username] + "@domain.com" 
} 

這隻需要如果帳戶的用戶名然而在CSV文件,以便擴大僞代碼一舉實現這兩個職位的是做:

foreach(Row in CSV) { 
    if(Row[username] exists in AD) { 
     ThisADAccount[Description] = Row[description] 
     ThisADAccount[E-mail] = ThisADACcount[Username] + "@domain.com" 
    } 
} 

如果有人可以幫助我這個僞轉換成工作PowerShell的,這將是大加讚賞。

回答

1

首先,您需要導入ActiveDirectory模塊才能通過PowerShell編輯AD中的對象。接下來您使用Import-CSV,請注意,您需要更改-path-Delimiter參數以適合您的CSV。我也推測你的CSV列標題是(username,Description)。

Import-Module ActiveDirectory 
$CSV = Import-Csv -Path 'T:\YourCSV.csv' -Delimiter ',' 

foreach($Row in $CSV) { 
    if(Get-ADUser -LDAPFilter "(sAMAccountName=$($Row.username))") { 
     Set-ADUser -Identity $Row.username ` 
        -Description $Row.Description ` 
        -EmailAddress "$($Row.username)@domain.com" 
    } 
} 

你幾乎必須以正確的格式的環路PowerShell你只需要使用cmdlet Set-ADUser設置用戶屬性和Get-ADUser來檢查AD用戶對象存在。

+0

差不多,理查德 - 但並不完全!我認爲你非常接近。我相信唯一需要更改代碼的是電子郵件。我想使用他們自己的用戶名更新用戶的電子郵件,例如如果他們在AD中的用戶名是'j6test1',我想把他們的電子郵件改爲'j6test1 @ ashingtonhigh.org'。我的電子表格不包含有關電子郵件的任何信息。 – dunc

+0

@dunc我已經更新了我的答案,如果用戶不存在,我也剛剛看到一個錯誤。給我一分鐘,我會解決它。 – Richard

+0

不錯的工作@理查德,謝謝。當你解決這個問題時,請告訴我,我會給你答案。 – dunc

相關問題