2014-12-03 69 views
0

我需要在AD通過所有用戶搜索,找到自己的屬性「郵件」,並在此屬性替換@ hell.com到@ heaven.comPowerShell的變化AD用戶屬性

我被困在出口國和進口以csv ...

Import-Module ActiveDirectory 
get-aduser -Filter {samaccountname -like "gmaleev"} -properties * | Select-Object SamAccountName,mail | export-csv -NoTypeInformation d:\1.csv 
$impfile = "d:\1.csv" 
Import-CSV $impFile 
foreach ($user in $users) 
{ 
$sam = $user.samaccountname 
$email = $user.mail 
write-host "User $sam has mail $mail" 
} 

它不起作用,爲什麼?

+0

導入和ForEach沒有連接,你應該有'Import-CSV $ impFile | foreach($ users中的$ users)'當前你導入的數據輸出,它不是由foreach處理 – Matt 2014-12-03 12:41:28

回答

0

目前的問題是,您正在運行一個cmdlet來導入數據但不保存它。您的ForEach cmdlet沒有處理任何數據,所以除了Import-CSV應該輸出到控制檯之外,您應該輸出空白。

此外,導出數據以重新導入它似乎是多餘的。我會推測你有出口它的理由。

Import-Module ActiveDirectory 
$impfile = "d:\1.csv" 
$results = Get-AdUser -Filter {samaccountname -like "gmaleev"} -properties * | Select-Object SamAccountName,mail 
$results | export-csv -NoTypeInformation d:\1.csv 
$results | foreach ($user in $users){ 
    $sam = $user.samaccountname 
    $email = $user.mail 
    write-host "User $sam has mail $mail" 
} 

這應該解決您顯示的內容。它將獲得相同的數據並將其保存到變量$results。導出該數據,然後將其傳送到ForEach以處理

您的標題建議您要更改用戶屬性。要做到這一點,你需要使用Set-Aduser。根據您的環境,這可能不是操縱電子郵件屬性的最佳方式。