Powershell scripts using the where object

I am trying to write a powershell script for the Exchange Management Shell by importing a contact list from a csv file into a distribution group.

I start with

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

This works well, except that some entries in my csv file contain an empty email address and create a new contact because ExternalEmailAddress is empty. So I tried:

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

But this did not work - it did not filter out entries with empty email addresses.

What am I doing wrong?

+5
source share
2 answers

I think you can use Where-Objectup ForEach-Object, because it will filter the objects passed through the pipeline.

, New-MailContact, , , , .

( 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 }
+9

, - , . , - :

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

All Articles