2012-11-28 25 views
3

我們使用powershell在我們的Active Directory中自動創建我們的學生用戶。除啓用郵箱之外,我們有一切正常工作。我們只給我們的中學生提供電子郵件地址。所以我試圖讓腳本讀取csv,並且只爲中學生啓用郵箱。我們所有的中學的校園編號都小於100,所以我試圖讓腳本使用ForEach,然後如果$ _。extensionAttribute1(校園編號爲csv的列)小於100,那麼它將郵件啓用帳戶。我遇到的問題是隻處理第一個用戶並結束腳本。我想讓它遍歷csv中的每一行。這是我的腳本。IfEach中的聲明使用csv

add-pssnapin Microsoft.Exchange.Management.PowerShell.E2010 

Import-CSV C:\scripts\updateuser.csv | ForEach { 
    $campus =$_.extensionAttribute1 
    If ($campus -lt '100') { 
    Enable-Mailbox -Identity $_.sAMAccountName -Database NISDSRV6DB1 
    }} 

任何幫助,你可以提供使這貫穿整個csv將不勝感激。 非常感謝您的幫助。

編輯...我搞亂了csv文件,我得到了一些有趣的結果。這個腳本會顯示任何內容的唯一途徑是,如果extensionAttribute1場用1填充我試圖讓小於100

+0

您的語法看起來正確 - 您確定它的行爲與您認爲的一致嗎?嘗試在if語句之前編寫一條消息進行調試,以查看它在ForEach-Object循環中執行多少次。 – dugas

+0

您的代碼看起來不錯,我會考慮重現您的CSV文件或至少將一個虛擬CSV文件放在一起並測試反對。我懷疑當前CSV中的某些內容導致循環在處理第一行後停止。 – nimizen

回答

0

您的'extensionAttribute1'值在'if'語句中沒有被正確地轉換爲整數。試試這個:

add-pssnapin Microsoft.Exchange.Management.PowerShell.E2010 

Import-CSV C:\scripts\updateuser.csv | ForEach { 
    $campus =$_.extensionAttribute1 -as [Int] 
    if ($campus -lt '100'){ 
     Write-Host $_.sAMAccountName    
     Enable-Mailbox -Identity $_.sAMAccountName -Database NISDSRV6DB1 
    } 
} 
+0

我明白。我不能提供輸入數據,因爲它是保密的學生信息。我會測試你的寫主機的建議,看看我得到了什麼結果。不幸的是,今天,我只有一名中學生在創建文件中,所以我無法測試實際的csv。感謝您的幫助。 – user1861252

+0

就是這樣。它沒有從CSV讀取屬性作爲int。我已經更新了我的腳本,並且正如我原本預期的那樣拉動。非常感謝你的幫助! – user1861252

0

嘗試在變量賦值的末尾添加;所有用戶

$campus =$_.extensionAttribute1;

+0

謝謝您的建議,但分號導致腳本失敗。我欣賞它,但。 – user1861252

0

我已經想通了。我的二級校園數字是1,7,10,42,43,44,45和46.我只會承認數字少於1(奇怪)。如果我把每個數字前面的0代表3位數字,它就會識別它們。 001,007,010,042,043,044,045和046將起作用並被識別爲小於100.還沒有找到推理,但是現在我需要調整我的csv導出過程來考慮這個數字方案。

+0

感謝您的更新,我修改了我的答案......您不需要調整您的導出過程。 – nimizen