我正在尝试为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....}但这似乎并不管用--它没有过滤掉电子邮件地址为空的条目。
我做错了什么?
发布于 2011-02-10 00:01:24
我认为您可能希望在使用ForEach-Object之前使用Where-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 }发布于 2011-02-10 00:01:02
可能实际上那里有一个空格或其他空格字符,它们实际上并不是空的。可能是这样的:
Import-csv C:\filename.csv | Where-Object {$_.ExternalEmailAddress -match "^\S+$" } | New-MailContact -Name $_.Name -ExternalEmailAddress $_.ExternalEmailAddress....}https://stackoverflow.com/questions/4947101
复制相似问题