我正在尝试为Exchange命令行管理程序编写Powershell脚本,将联系人列表从csv文件导入通讯组。
我从开始
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....}
但这似乎不起作用-它没有过滤出包含空白电子邮件地址的条目。
我究竟做错了什么?
最佳答案
我认为您可能想在Where-Object
之前使用ForEach-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 }
关于使用where-object的Powershell脚本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4947101/