2011-02-09 7 views
5

Exchange 관리 셸용 powershell 스크립트를 작성하고 CSV 파일의 연락처 목록을 메일 그룹으로 가져 오려고합니다.Where-Object를 사용하여 Powershell 스크립팅

나는이 내 CSV 파일에서 일부 항목이 빈 이메일 주소를 가지고 있다는 것을 제외하고는, 잘 작동

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

으로 시작하고, ExternalEmailAddress가 비어 있기 때문에이 TEH 새 연락처 크랩을 만들 수 있습니다.

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

을하지만 그것은 작동하지 않았다 - 그것은 빈 이메일 주소 항목을 필터링하지 않은 : 그래서, 나는 시도했다.

내가 뭘 잘못하고 있니?

답변

9

나는 당신이 파이프 라인을 따라 전달 된 개체를 필터링 때문에 Where-Object 이전 ForEach-Object에 사용할 수도 있습니다 생각합니다.

New-MailContact cmdlet이 지원하는 기능에 따라 결과를 직접 파이프 할 수도 있고 하나씩 전달해야 할 수도 있습니다.

모든 번 (사용하지 ForEach-Object) : (ForEach-Object를 사용하여) 하나

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

하나 :

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

는 아니, 난 것을 시도하고, 오류 - 새로운-MailContact를 가지고 : 'Name'매개 변수가 null이므로 인수를 바인드 할 수 없습니다. 줄에 : 1 char : 106 + Import-csv c : \ FloridaBarTest.csv | Where-Object {$ _. ExternalEmailAddress -ne ""} | New-MailContact -Name <<<< $ _. 이름 -FirstName $ _. FirstName -LastName $ _. FirstName -ExternalEmailAddress $ _. ExternalEmailAddress -OrganizationalUnit "FloridaBarContacts"csv 내용이 파이프 라인을 통과하지 않는 것처럼 보입니다. . –

+0

어떤 오류가 발생 했습니까? 좀 더 자세한 정보로 질문을 업데이트 할 수 있습니까? –

+0

파이프 라인을 통해 전달되는 PSObject의 멤버를 확인하여 액세스하고 있는지 확인하는 것이 좋습니다. Import-Csv의 결과를 Get-Member로 파이프합니다. –

1

거기에 실제로 공백이나 다른 공백 문자가있을 수 있으며, 실제로는 null이 아닙니다. 이 같은 아마 뭔가 :

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