Server/Windows Server

PowerShell - Mail 발송

달빛에취하다 2024. 2. 21. 09:35
# Office365(현 M365) 관련 샘플입니다.
# 윈도우 서버 자동 업데이트 후 발송을 위한 자동 스크립트 입니다.
# 비밀번호는 별도의 PowerShell 에서 생성하여 $password 에 넣어 주어야 합니다.
# 비밀번호를 각 PC 마다 새로 생성해 주어야 합니다.

$userName = 'tester@d-0-b.kr'

#"앞의 # 주석을 제거하고 비밀번호를 여기 넣어야 합니다." | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString  #암호화된 패스워드 문자열 생성  단독 실행하여 아래 $password에 값을 넣어 주면 됩니다.
#  샘플 -> "passwords" | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString  #암호화된 패스워드 문자열 생성  단독 실행하여 아래 $password에 값을 넣어 주면 됩니다.
# 각 PC 마다 새로 생성해 줘야 합니다.

$password = '12345678d08c9ddf0115d1118c7a00c04fc297eb010000007205a3e1c5c0494489db1739b35728b000120345678912345671066000000010000200000002d028bc05e76a76e26b61bc529bf78a3f2659bbf6898b37a6a47dbfb332a8104000000000e8000000002000020000000555dca50107969de9572d6d01762f026554944436e7677482cebec6a7a8c2112200000008f45dec8a8a6a7258a31e63b4ed518ea3d48fc958ff6420848c0a224d891613c40000000c4b51181c1dd331e586fb6564936069749a896941e61b2c5844e104bb15d8e697afec5b56c3909871703be9be99514f67363bc1db74976ae24f09cc6746b770f'

[SecureString]$securepassword = $password | ConvertTo-SecureString

$credential = New-Object System.Management.Automation.PSCredential -ArgumentList $username, $securepassword 

$now = Get-Date

$msg = new-object Net.Mail.MailMessage


$SMTP = "smtp.office365.com"   
$msg.From = "server@d-0-b.kr"

$msg.To.Add("gdhong@d-0-b.kr")
$msg.To.Add("tester1@d-0-b.kr")
$msg.To.Add("tester2@d-0-b.kr")
$msg.To.Add("tester3@d-0-b.kr")

$msg.Subject = "[자동발송] [ " + $env:computername + " ] Windows 보안 업데이트 완료 (" + $now + ")"

$Body = "이 메일은 스크립트 실행 후 자동으로 발송되는 메일 입니다."
$Body = $Body +  "`n`n"
$Body = $Body +  "일시 : " + $now 
$Body = $Body +  "`n"
$Body = $Body +  "대상 : [ " + $env:computername + " ]"
$Body = $Body +  "`n`n"
$Body = $Body +  "내역 " + (Get-Content (".\log\" + $env:computername + "_" + (date).ToString("yyyy-MM-dd") + ".txt") -Raw).Replace("`r`n","`n")
$msg.Body = $Body

$Email = New-Object Net.Mail.SmtpClient($SMTP, 25)
$Email.EnableSsl = $true
$Email.Credentials = $credential
$Email.Send($msg)
#$Email.Send($From, $To, $Subject, $Body)