2011-02-09 50 views
5

我想爲Exchange命令行管理程序編寫一個powershell腳本,將聯繫人列表從csv文件導入到通訊組中。使用Where對象的Powershell腳本

我開始了與

Import-csv C:\filename.csv | forEach-Object {New-MailContact .......} 

這種運作良好,但在我的csv文件的某些條目有一個空白的電子郵件地址,並創建新德接觸胡扯,因爲ExternalEmailAddress是空白。所以,我試過:

Import-csv C:\filename.csv | ForEach-Object { Where-Object {$_.ExternalEmailAddress -ne "" } | New-MailContact -Name $_.Name -ExternalEmailAddress $_.ExternalEmailAddress....} 

但這似乎並沒有工作 - 它沒有過濾掉空白電子郵件地址的條目。

我在做什麼錯?

回答

9

我想你可能想使用前ForEach-ObjectWhere-Object,因爲它會過濾沿管道傳遞的對象。

根據New-MailContact cmdlet支持的內容,您可能會將結果直接傳遞給它,或者您可能必須逐個傳遞結果。

所有一次(不使用ForEach-Object):

Import-csv C:\filename.csv | Where-Object {$_.ExternalEmailAddress -ne "" } | New-MailContact -Name $_.Name -ExternalEmailAddress $_.ExternalEmailAddress } 

一個接一個(使用ForEach-Object):

Import-csv C:\filename.csv | Where-Object {$_.ExternalEmailAddress -ne "" } | ForEach-Object { New-MailContact -Name $_.Name -ExternalEmailAddress $_.ExternalEmailAddress } 
+0

不,我試過了,並且得到了一個錯誤 - 新-MailContact:無法將參數綁定到參數「名稱」,因爲它爲空。 在線:1 char:106 + Import-csv c:\ FloridaBarTest.csv | Where-Object {$ _。ExternalEmailAddress -ne「」} | New-MailContact -Name <<<< $ _。Name -FirstName $ _。FirstName -LastName $ _。FirstName -ExternalEmailAddress $ _。ExternalEmailAddress -OrganizationalUnit「FloridaBarContacts」好像csv內容沒有通過管道傳遞。 – 2011-02-09 16:31:11

1

可能實際上有一個空間或一些其他的空白字符在那裏,而且它們不是空的。也許是這樣的:

Import-csv C:\filename.csv | Where-Object {$_.ExternalEmailAddress -match "^\S+$" } | New-MailContact -Name $_.Name -ExternalEmailAddress $_.ExternalEmailAddress....}