我正在尝试为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....}
但这似乎不起作用 - 它没有过滤掉带有空白电子邮件地址的条目。
我做错了什么?
答案 0 :(得分: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 }
逐个(使用ForEach-Object
):
Import-csv C:\filename.csv | Where-Object {$_.ExternalEmailAddress -ne "" } | ForEach-Object { New-MailContact -Name $_.Name -ExternalEmailAddress $_.ExternalEmailAddress }
答案 1 :(得分:1)
可能在那里实际上有一个空格或其他一些空白字符,并且它们并非一成不变。也许是这样的:
Import-csv C:\filename.csv | Where-Object {$_.ExternalEmailAddress -match "^\S+$" } | New-MailContact -Name $_.Name -ExternalEmailAddress $_.ExternalEmailAddress....}