簡體   English   中英

如何優化此電子郵件列表PowerShell腳本

[英]How can I optimize this Email list powershell script

如何配置此腳本以便我可以為多個地址(例如歐洲,亞洲)重復此郵件過程而無需多次復制代碼?

例如,我可以這樣做嗎?:

IF $keyword "Europe"找到了THEN $europe

$europe =歐洲的東西

THEN

IF $keyword "Asia"發現THEN $asia

等等

這是我的代碼:

   # Email Automation

    #Defines Directory
    $dir = "C:\Users\user\Desktop\myfolder"
    #Sets STMP server
    $SMTPServer = "10.0.0.1"
    #Declares todays time and formats
    $Time = (Get-Date).ToString('MM/dd/yyyy hh:mm tt')

    # Europe # 
    #Declares the keyword used to find List
    $keywordEur = "Europe" 

     #Searches dir for list , formats 
    $AttachmentEur = Get-ChildItem -Path $dir -Filter "*$keywordEur*" -Recurse
    $AttachmentNameEur = $AttachmentEur.BaseName

    #Defines mailing list
    $FromEur = "me@email.com"
    $ToEur = "you@europeemail.com"
    $CcEur = "him@email.com", "her@email.com"
    $SubjectEur = "$AttachmentName @ $Time"
    $BodyEur = "Please find attached the file needed for Europe. 

    Regards,
    Me
    "

    #Actions Email
    Send-MailMessage -From $FromEur -To $ToEur -CC $CcEur -Subject         $SubjectEur -Body $BodyEur -SmtpServer $SMTPServerEur -Attachments         $AttachmentEur.FullName

    # Asia # 
    #Declares the keyword used to find List
    $keywordAs = "Asia" 

     #Searches dir for list , formats 
    $AttachmentAs = Get-ChildItem -Path $dir -Filter "*$keywordAs*" -Recurse
    $AttachmentNameAs = $AttachmentAs.BaseName

    #Defines mailing list
    $FromAs = "me@email.com"
    $ToAs = "you@asiaemail.com"
    $CcAs = "him@email.com", "her@email.com"
    $SubjectAs = "$AttachmentNameAs @ $Time"
    $BodyAs = "Please find attached the file needed for Asia. 

    Regards,
    Me
    "

    #Actions Email
    Send-MailMessage -From $FromAs -To $ToAs -CC $CcAs -Subject $SubjectAs         -Body $BodyAs -SmtpServer $SMTPServerAs -Attachments $AttachmentAs.FullName

以下是如何使用ForEach循環和使用區域的兩個哈希表構建的對象重復它:

# Email Automation

#Defines Directory
$dir = "C:\Users\user\Desktop\myfolder"
#Sets STMP server
$SMTPServer = "10.0.0.1"
#Declares todays time and formats
$Time = (Get-Date).ToString('MM/dd/yyyy hh:mm tt')

$Europe = @{            
    Name = 'Asia'
    From = "me@email.com"
    To = "you@email.com"
    Cc = "him@email.com", "her@email.com"
}

$Asia = @{  
    Name = 'Asia'          
    From = "me@email.com"
    To = "you@email.com"
    Cc = "him@email.com", "her@email.com"
}

$Regions = @()
$Regions += New-Object PSObject -Property $Asia
$Regions += New-Object PSObject -Property $Europe

ForEach ($Region in $Regions) {

    #Searches dir for list , formats 
    $Attachment = Get-ChildItem -Path $dir -Filter "*$($Region.name)*" -Recurse
    $AttachmentName = $Attachment.BaseName

    $Subject = "$AttachmentName @ $Time"
    $Body = "Please find attached the file needed for $($Region.name). 

    Regards,
    Me
    "
    #Actions Email
    Send-MailMessage -From $Region.From -To $Region.To -CC $Region.Cc -Subject $Subject -Body $Body -SmtpServer $SMTPServer -Attachments $Attachment.FullName
}

就在這里。 由於關鍵字本身是唯一似乎改變的東西,所以將關鍵字放在一個數組中並將整個事物包裝在一個循環中:

# Email Automation

#Define Directory
$dir = "C:\Users\user\Desktop\myfolder"
#Set STMP server
$SMTPServer = "10.0.0.1"
#Declare todays time and formats
$Time = (Get-Date).ToString('MM/dd/yyyy hh:mm tt')

#Define mailing list
$From = "me@email.com"
$To = "you@email.com"
$Cc = "him@email.com", "her@email.com"

#Declares the keywords used to find attachments
$keywords = 'Europe','Asia'

foreach($keyword in $keywords){
    #Searches dir for list , formats 
    $Attachment = Get-ChildItem -Path $dir -Filter "*$keyword*" -Recurse
    $AttachmentName = $Attachment.BaseName

    $Subject = "$AttachmentName @ $Time"
    $Body = "Please find attached the file needed for $keyword. 

    Regards,
    Me
    "

    #Actions Email
    Send-MailMessage -From $From -To $To -CC $Cc -Subject $Subject -Body $Body -SmtpServer $SMTPServer -Attachments $Attachment.FullName
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM