2016-11-13 6 views
0

私はSQLに接続し、データセットを取り出してフォーマットするスクリプトを作成しています。私はその後、Htmlテーブルとともに各チームのマネージャーにEメールを送る必要があり、後半に進む最善の方法を考えることはできません。Powershellデータテーブルからの一括メール

データがそうのようにフォーマットされます。Team | Item | Manager email

すべての項目がユニークなので、いくつかは同じチームと同じメールの横に表示することができます。次のような
しまう何かが実行可能なこと:
For each $_.ManagerEmail in $dataset (build html output containing each unique item)

は、彼らは明らかに一つだけのメールではなく、各項目のための1つを受けるべきです。
ご意見やご質問はどうぞ。

EDIT: 入力していただきありがとうございます。私はMathiasの提案を実装しようとしましたが、スクリプトは出力もエラーもなくなっています。私は問題がここにあるので、SQLの部分が正常に動作することを知っている。

foreach($ManagerSet in $Dataset.Rows |Group-Object "Manager Email") 
{ 
$Items = $ManagerSet.Group |Select-Object Item 
$Outlook = New-Object -ComObject Outlook.Application 
$Mail = $Outlook.CreateItem(0) 
$Mail.To = $ManagerSet.ManEmails 
$Mail.Subject = "Test" $Mail.Body = 'Testing. Failures include' + $managerset.itemname + $managerset.Info1 $Mail.Send() 
} 

私が逃したものはありますか?

+1

あなたはおそらくすべてのアイテムを通過し、それらを並べ替える必要があるでしょう、あなたはいくつかのアイテムのために1つの電子メールを送信する場合、私はそれを達成するための他の方法は表示されません – 4c74356b41

答えて

1

私はその後、グループごとに1通の電子メールを送信し、「マネージャーのメール」欄で、データテーブル内の行をグループ化することをお勧め:

foreach($ManagerSet in $Datatable.Rows |Group-Object "Manager Email") 
{ 
    $Items = $ManagerSet.Group |Select-Object Item 
    # Compose email containing $Items in here. 
    # You can refer to the email address via $ManagerSet.Name 
} 

すべて含むチーム/マネージャーごとに単一の電子メールを送信することができますこの方法を関連する商品

関連する問題