使用where-object的Powershell脚本

Ken*_*Ray 5 powershell

我正在尝试为Exchange命令行管理程序编写powershell脚本,将联系人列表从csv文件导入到通讯组.

我开始了

Import-csv C:\filename.csv | forEach-Object {New-MailContact .......}
Run Code Online (Sandbox Code Playgroud)

这很有效,除了我的csv文件中的某些条目有一个空白的电子邮件地址,并且由于ExternalEmailAddress为空,因此创建新联系人会崩溃.所以,我尝试过:

Import-csv C:\filename.csv | ForEach-Object { Where-Object {$_.ExternalEmailAddress -ne "" } | New-MailContact -Name $_.Name -ExternalEmailAddress $_.ExternalEmailAddress....}
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用 - 它没有过滤掉带有空白电子邮件地址的条目.

我究竟做错了什么?

Sco*_*aad 9

我想你可能想先用它Where-Object,ForEach-Object因为它会过滤沿管道传递的对象.

根据New-MailContact cmdlet支持的内容,您可以将结果直接传递给它,或者您可能必须逐个传递它们.

一次性(不使用ForEach-Object):

Import-csv C:\filename.csv | Where-Object {$_.ExternalEmailAddress -ne "" } | New-MailContact -Name $_.Name -ExternalEmailAddress $_.ExternalEmailAddress }
Run Code Online (Sandbox Code Playgroud)

逐个(通过使用ForEach-Object):

Import-csv C:\filename.csv | Where-Object {$_.ExternalEmailAddress -ne "" } | ForEach-Object { New-MailContact -Name $_.Name -ExternalEmailAddress $_.ExternalEmailAddress }
Run Code Online (Sandbox Code Playgroud)