Line Notification for VM Backup with Powershell

หลังจากที่เราเขียน Powershell Script ในการทำ VM Backup ขึ้นมา เราจะไม่มีการแจ้งเตือนว่ากา Backup ที่เราทำนั้น Success หรือไม่ เลยควรจะทำ Notification ไม่ว่าจะเป็นทาง Email หรือทาง Social Network อย่าง Line ซึ่งผมเคยเขียนบทความไว้ อ่านเพิ่มเติม : ที่นี่


Directory Structure

เราจะใช้ Directory Structure เดิมที่เคยสร้างไว้ โดยจะประกอบไปด้วยโครงสร้างดังนี้

C:\powershell-script
├───Credential/
│   └───vcsa.lab.local.clixml
└───VM-Script/
    ├───Backup-Daily.ps1
    ├───Backup-Monthly.ps1
    ├───Backup-Weekly.ps1
    └───Configuration.ps1

Get Started

  • สร้าง Group Line แล้วเข้าไปที่ https://notify-bot.line.me/my/ เพื่อทำการสร้าง Access Token ที่เราต้องการส่งไปยัง Group นั้น ๆ
  • เราจะทำการตรวจสอบ VM ทั้งหมดที่เราจะทำการ Backup และ VM ที่มีการ Backup Success โดยใช้การนับจำนวน Count ++ ในแต่ละรอบ Loop ซึ่งจะใช้ 2 Variable คือ $all และ $success ถ้ามีการ Backup Fail ตัวแปร $success ก็จะไม่ถูกนับ เพราะจะหลุดจาก try…catch
foreach ($line in $vm) {

	...
	$all += 1

	try {

		...
		$success += 1		

	} catch {

		...

	}

}
  • ทำการเพิ่ม Global Variable 2 ตัวที่เราได้สร้างขึ้นในไฟล์ Configuration.ps1
# Line Notification
$Global:secret_key = 'your_token'
$Global:all = 0
$Global:success = 0
  • ทำการแก้ไขไฟล์ Backup-Daily.txt
if (!$error -eq '') {

	$msg = 'Daily : ' + $date + "`r`n" + 'All VM Backup : ' + $all + "`r`n" + 'Count VM Backup Successfully : ' + $success
	$uri = 'https://notify-api.line.me/api/notify'
	$token = 'Bearer ' + $secret_key
	$header = @{Authorization = $token}
	$body = @{message = $msg}
	$res = Invoke-RestMethod -Uri $uri -Method Post -Headers $header -Body $body 
	echo $res
}
  • ทำการแก้ไขไฟล์ Backup-Weekly.txt
if (!$error -eq '') {

	$msg = 'Weekly : ' + $date + "`r`n" + 'All VM Backup : ' + $all + "`r`n" + 'Count VM Backup Successfully : ' + $success
	$uri = 'https://notify-api.line.me/api/notify'
	$token = 'Bearer ' + $secret_key
	$header = @{Authorization = $token}
	$body = @{message = $msg}
	$res = Invoke-RestMethod -Uri $uri -Method Post -Headers $header -Body $body 
	echo $res
}
  • ทำการแก้ไขไฟล์ Backup-Monthly.txt
if (!$error -eq '') {

	$msg = 'Monthly : ' + $date + "`r`n" + 'All VM Backup : ' + $all + "`r`n" + 'Count VM Backup Successfully : ' + $success
	$uri = 'https://notify-api.line.me/api/notify'
	$token = 'Bearer ' + $secret_key
	$header = @{Authorization = $token}
	$body = @{message = $msg}
	$res = Invoke-RestMethod -Uri $uri -Method Post -Headers $header -Body $body 
	echo $res
}

อ่านเพิ่มเติม : https://bit.ly/2TC5Isg

Leave a Reply

Your email address will not be published. Required fields are marked *