2014-09-24 45 views
0

這可能聽起來像一個愚蠢的問題,但我想知道如何導入一些郵件地址到PowerShell發送一個郵件到他們所有人,如Send-MailMessage -To $MailToPowerShell ConvertFrom-CSV橫向

我已經設法刪除行開頭的文字MailTo:。這個例子會更清楚:

輸入文件:

# Comment 
MailTo: [email protected], [email protected], [email protected] 
MailTo: [email protected], [email protected], [email protected], [email protected], [email protected] 

代碼:

$File = (Get-Content -Path $ImportFile) -notlike '#*' | Foreach {$_.TrimEnd()} | Where {$_ -ne ""} 
$MailTo = $File | where { $_ -like "MailTo:*" } | Foreach {$_ -replace "^MailTo: "} 

解決方案:

$MailTo = ($File | where { $_ -like "MailTo:*" } | Foreach {$_ -replace "^MailTo: "}) -split ',\s*' | Foreach {$_.Trim()} | Where {$_} 

感謝喬伊以下。

回答

0

所以你基本上只是想從該文件的所有郵件地址?或者只是從特定的行?

在前者的情況類似

$addresses = ((Get-Content $ImportFile) -replace '#.*|^MailTo:\s+') -split ',\s*' 

應該足夠了。您可以將該陣列傳遞給-To參數Send-MailMesssage。之後也許還會有一些空白的空白,但是可以通過將上面的管道輸送到| %{$_.Trim()}來輕鬆解決。如果你的$數據包含

$data = cat file 
[regex] $re = "(?:\G(?!\A)|^MailTo:[ ]*)(?:[ ]*,[ ]*)?(?'mail'[^,\s]+)" 
$address = $data | 
    select-string $re -all | 
     foreach {$_.matches}|foreach {$_.groups['mail'].value} 
Write-output $address 

例如:

+0

謝謝你的幫助。但它不起作用。當我嘗試將SendMessageMes​​sage發送到數組時,只有最後一個用戶接收到該消息,而不是所有人。 – DarkLite1 2014-09-24 07:44:43

+0

這不是文檔所說的,但假設它確實被破壞了,那麼解決這個問題是微不足道的。只需發送一封郵件到每個地址,而不是一封郵件發送給所有人。 – Joey 2014-09-24 07:47:30

+0

我真的需要它是一個電子郵件給多個收件人。同樣的問題陳述[這裏](http://stackoverflow.com/questions/10241816/powershell-send-mailmessage-email-to-multiple-recipients)。我可能需要建立一個像['[email protected]','[email protected]',..'這樣的'[String]'。 – DarkLite1 2014-09-24 07:55:23

1

您也可以使用這個變體,更強大的

# comment [email protected], [email protected] 
Mailto: [email protected], [email protected] ...etc 
Mailto: [email protected] 
[email protected], [email protected] 
Data other data 

它返回精確的數據

+0

謝謝walid,但這個正則表達式與另一個相比有什麼優勢? – DarkLite1 2014-09-24 09:13:30

+0

@ DarkLite1:查看我的更新 – 2014-09-24 09:22:19

+0

感謝您的額外反饋Walid。 'Comment'部分已經在變量'$ File'中過濾掉了。所以這不是我擔心的問題。我測試了兩種解決方案,即我的OP和您的解決方案,並提供相同的結果。所以兩個都沒問題我想:) – DarkLite1 2014-09-25 07:40:53