Vmware

RVTools süreçlerini otomatikleştirmek ve mail atmasını sağlamak

VMware ortamlarındaki bir çok bilgiye tek bir ekrandan bakmak için çoğu zaman RVTolls kullanmaktayız. VMware yöneten çoğu danışman RVTools mutlaka kullanıyordur. O yüzden bugün RVTools’un ne olduğunu anlatmayacağım. Bugün RVTools sürecinin nasıl otomatikleştirilip, nasıl her sabah mail alacağınızdan bahsedeceğim.

Öncelikle RVTools otomatikleştirme sürecinde powershell scripti kullanacağız. Aslında bu powershell script’i RVTools içerisinde geliyor.

C:\Program Files (x86)\Robware\RVTools dizini altında “RVToolsBatchMultipleVCs.ps1” adında bir script var.

Bu script birden fazla vCenter’dan bilgileri çekip mail olarak almanızı sağlıyor.

Bu scripti tek vCenter için beraber düzenleyip, gerekli bilgileri gireceğiz. Ardından Windows Task Schedular ile günlük olarak çalıştıracağız.

İlk olarak C:\Program Files (x86)\Robware\RVTools dizini altında bulunan RVToolsPasswordEncryption.exe yi çalıştırıyoruz.

Burada vCenter şifremizi encrypt hale getireceğiz. (Buraya vCenter administrator şifresi yerine yeni bir kullanıcı açtıktan sonra sadece read-only yetki vermenizi şiddetle tavsiye ederim.)

vCenter read-only user şifremizi girdikten sonra verilen encrypt edilmiş şifreyi not alalım.

Daha sonrasında C:\ dizini içerisinde RVTools adında bir klasör açalım.

Aşağıdaki verdiğim powershell dosyasını inceleyelim.

# =============================================================================================================
# Script:    RVToolsBatchMultipleVCs.ps1
# Version:   1.2
# Date:      November, 2019
# By:        Rob de Veij
# =============================================================================================================

<#
.SYNOPSIS
With this example script you can start the the RVTools export all to xlsx function for multiple vCenter servers.
The output xlsx files will be merged to one xlsx file which will be mailed
	
.DESCRIPTION
With this example script you can start the the RVTools export all to xlsx function for multiple vCenter servers.
The output xlsx files will be merged to one xlsx file which will be mailed


.EXAMPLE
 .\RVToolsBatchMultipleVCs.ps1

#>

# Save current directory
$SaveCurrentDir = (get-location).Path

# Set RVTools path
[string] $RVToolsPath = "C:\Program Files (x86)\Robware\RVTools"

# cd to RVTools directory
set-location $RVToolsPath


# -----------------------------------------------------
# Set parameters for vCenter 1 and start RVTools export
# -----------------------------------------------------
[string] $VCServer = "10.10.10.10"                                                    # vCenter server ip adresi
[string] $User = "rvtools@vsphere.local"                                                    # read-only vCenter kullanici adi
[string] $EncryptedPassword = "_RVToolsPfsafasfas4353453fdgd=" #RVToolsPasswordEncryption.exe ile urettigimiz encrypt sifremiz
[string] $XlsxDir1 = "C:\RVTools"
[string] $XlsxFile1 = "vCenter1.xlsx"

# Start cli of RVTools
Write-Host "Start export for vCenter $VCServer" -ForegroundColor DarkYellow
$Arguments = "-u $User -p $EncryptedPassword -s $VCServer -c ExportAll2xlsx -d $XlsxDir1 -f $XlsxFile1 -DBColumnNames -ExcludeCustomAnnotations"

Write-Host $Arguments

$Process = Start-Process -FilePath ".\RVTools.exe" -ArgumentList $Arguments -NoNewWindow -Wait -PassThru

if($Process.ExitCode -eq -1)
{
    Write-Host "Error: Export failed! RVTools returned exitcode -1, probably a connection error! Script is stopped" -ForegroundColor Red
    exit 1
}
$OutputFile = "C:\RVTools\vCenter1.xlsx"
# ---------------------
# Mail output xlsx file
# ---------------------
[string] $SMTPserver = "10.10.10.12"  # SMTP server ip adresi
[string] $SMTPport = "25"			  # SMTP server port bilgisi
[string] $Mailto = "support@ornek.com.tr"	# SMTP server kime mail atacagimiz
[string] $MailFrom = "support@ornek.com.tr"	# SMTP server maili kim atacak
[string] $MailSubject = "FirmaRVtolls"

Write-Host "Send output file by mail" -ForegroundColor DarkYellow
$Arguments = "/SMTPserver $SMTPserver /smtpport $SMTPport /mailto $Mailto /mailfrom $Mailfrom /mailsubject $Mailsubject /attachment  $OutputFile"
Write-Host $Arguments
Start-Process -FilePath ".\RVToolsSendmail.exe" -ArgumentList $Arguments -NoNewWindow -Wait


# Back to starting dir
Set-Location $SaveCurrentDir

((Get-Date).ToString('yyyy-MM-dd'))

Burada değişkenleri kendi yapınıza göre düzenlemeniz gerekmekte.

$VCServer = “10.10.10.10” # vCenter server ip adresi
$User = “rvtools@vsphere.local” # read-only vCenter kullanıcı adı
$EncryptedPassword = “_RVToolsPfsafasfas4353453fdgd=” #RVToolsPasswordEncryption.exe ile ürettiğimiz encrypt şifremiz

$SMTPserver = “10.10.10.12” # SMTP server ip adresi
$SMTPport = “25” # SMTP server port bilgisi
$Mailto = “support@ornek.com.tr” # Kime mail atacağımız
$MailFrom = “support@ornek.com.tr” # Mail hangi adresten gelecek
$MailSubject = “FirmaRVtolls” # Mail başlığı

Bu powershell dosyasını ps1 uzantısı ile kaydettikten sonra çalıştırıp deneyelim. Eğer powershell dosyasını çalıştırırken hata alıyorsanız,

Set-ExecutionPolicy -ExecutionPolicy Bypass komutu ile doğrulanmamış scriptlere izin verelim.

Scriptimizi çalıştıralım.

RVTolls raporumuz belirtmiş olduğumuz dizine oluştu.

Mail olarak gönderildiğini kontrol edelim.

Artık bu scripti Windows’un zamanlanmış görevleri ile otomatikleştirebilirsiniz. Zamanlanmış göreve eklemek için Hakan Uzuner’in yazmış olduğu makaleden yararlanabilirsiniz.

Yazar Hakkında

Hakan KAPLANOĞLU

Yorum Yapın