RVTools — приложение на .NET для вывода информации о виртуальном окружении VMware.
RVTools — вывод информации о виртуальных машинах VMware
Приложение имеет CLI для автоматизации рутинных вещей. К примеру, используя параметры командной строки, можно экспортировать полученные данные в файл.
Параметры RVTools.exe
Для экспорта данных я обычно запускал RVTools, логинился, затем экспорьтировал данные. Работа ручная. Однако, можно использовать параметры.
- -s — хост ESXi или vCenter, к которому нужно подключиться
- -passthrough — использовать сквозную аутентификацию для подключения к хосту ESXi или vCenter
- -u — имя пользователя для подключения к хосту ESXi или vCenter
- -p — пароль для подключения к хосту ESXi или vCenter (зашифрованный).
- -c — желаемый вариант экспорта
- -d — каталог, в который вы хотите экспортировать файл xlsx или csv
- -f — имя файла
Параметр экспорта -c предоставляет множество опций. Вы можете использовать его для выбора экспорта в csv или xlsx, а также для экспорта всех вкладок или только одной вкладки информации:
- -c ExportAll2xlsx — экспортировать все вкладки в формат xlsx
- -c ExportAll2csv — экспортировать все вкладки в формат csv
- -c ExportXXX2xlsx — где XXX представляет отдельную вкладку в RVTools; экспорт в xlsx
- -c ExportXXX2csv — где XXX представляет отдельную вкладку в RVTools; экспорт в csv
Отдельные вкладки в RVTools, соответствующие XXX:
- vInfo
- vCPU
- vMemory
- vDisk
- vPartition
- vNetwork
- vFloppy
- vCD
- vSnapshot
- vTools
- vRP
- vCluster
- vHost
- vHBA
- vNIC
- vSwitch
- vPort
- dvSwitch
- dvPort
- vSC+VMK
- vDatastore
- vMultiPath
- vLicense
- vHealth
О пароле
Раньше в -p можно было передать пароль. Теперь, если указать пароль, то получим ошибку:

Обычный пароль не поддерживается, нужен зашифрованный. Зашифровать пароль можно скриптом RVToolsPasswordEncryption.ps1. Запускаем, указываем пароль, получаем зашифрованный пароль.
Примечание: PowerShell использует API защиты данных Windows для шифрования/дешифрования вашего пароля. Это означает, что использовать зашифрованный пароль сможет только та же учётная запись пользователя на том же компьютере.
Примеры
# Подключиться к vCenter, используя сквозную аутентификацию, и экспортировать все вкладки в xlsx в текущий каталог с именем файла по умолчанию
RVTools.exe -s vcsa.corp.contoso.com -passthrough -c ExportAll2xlsx
# Подключиться к vCenter, используя аутентификацию по имени пользователя/паролю, и экспортировать все вкладки в csv в файл C:\Temp\RVTools_export_ГГГГ-ММ-ДД_ЧЧ.ММ.СС.xlsx
RVTools.exe -s vcsa.corp.contoso.com -u administrator@vsphere.local -p VMware1! -c ExportAll2csv -d C:\Reports
# Подключиться к vCenter, используя сквозную аутентификацию, и экспортировать вкладку vInfo в xlsx в файл C:\Temp\vcsa1-vInfo.xlsx
RVTools.exe -s vcsa.corp.contoso.com -passthrough -c ExportvInfo2xlsx -d C:\Reports -f vcsa1-vInfo.xlsx
# Подключиться к vCenter, используя аутентификацию по имени пользователя/паролю, и экспортировать вкладку vHealth в csv в файл C:\Temp\vcsa1-vHealth.csv
RVTools.exe -s vcsa.corp.contoso.com -u administrator@vsphere.local -p VMware1! -c ExportvHealth2csv -d C:\Reports -f vcsa1-vHealth.csvС помощью параметров командной строки вы можете настроить запланированное задание для регулярного экспорта всей (или части) информации из RVTools в общую папку. Например, вы можете настроить ежедневный экспорт информации о состоянии (Health), который будет ждать вас в общей папке раз в неделю для просмотра.

Отправка экспорта RVTools по электронной почте
Экспорт по расписанию в общую папку — это хорошо, но потом нужно не забыть зайти и посмотреть на него. Лучшее решение — получать его прямо в почтовый ящик. В папке RVTools есть скрипт, который может сделать это за вас.
В папке установки RVTools находится файл с именем RVToolsBatchMultipleVCs.ps1. В качестве примера там происходит экспорт XLSX из трёх разных vCenter. Все три файла объединяются в один и отправляются по электронной почте.
# =============================================================================================================
# Script: RVToolsBatchMultipleVCs.ps1
# Version: 1.4
# Date: November, 2023
# By: Dell Technologies
# =============================================================================================================
<#
.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)\Dell\RVTools"
# cd to RVTools directory
set-location $RVToolsPath
# -----------------------------------------------------
# Set parameters for vCenter 1 and start RVTools export
# -----------------------------------------------------
[string] $VCServer = "192.168.2.220" # my test vCenter server
[string] $User = "vsphere.local\rob"
# use -passthroughAuth or an encrypted password. You can encrypt your password with the provided PowerShell script RVToolsPasswordEncryption.ps1
[string] $EncryptedPassword = "_RVToolsV3PWD01000000d08c9ddf0115d1118c7a00c04fc297eb01000000325cf1e07062a848a422825c7ccd19f100000000020000000000106600000001000020000000397128ff49bbd394092555bac4ea58b61232edf65d9c19f61f94516857e87e3c000000000e8000000002000020000000d068a8d3251e73170b8fd63e329aecb048885da168bc6a24c363e18f1a0a446c20000000efca9029a70b20b9d2d1042d3f34a1c370b965c085f2933a3fa453a0dd5392324000000084b7ad15d00299271c13ce7f44ad45fb6a6d8ded586f22a27"
[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"
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
}
# -----------------------------------------------------
# Set parameters for vCenter 2 and start RVTools export
# -----------------------------------------------------
[string] $VCServer = "192.168.2.220"
[string] $User = "vsphere.local\rob"
# use -passthroughAuth or an encrypted password. You can encrypt your password with the provided PowerShell script RVToolsPasswordEncryption.ps1
[string] $EncryptedPassword = "_RVToolsV3PWD01000000d08c9ddf0115d1118c7a00c04fc297eb01000000325cf1e07062a848a422825c7ccd19f100000000020000000000106600000001000020000000397128ff49bbd394092555bac4ea58b61232edf65d9c19f61f94516857e87e3c000000000e8000000002000020000000d068a8d3251e73170b8fd63e329aecb048885da168bc6a24c363e18f1a0a446c20000000efca9029a70b20b9d2d1042d3f34a1c370b965c085f2933a3fa453a0dd5392324000000084b7ad15d00299271c13ce7f44ad45fb6a6d8ded586f22a27"
[string] $XlsxDir2 = "C:\RVTools"
[string] $XlsxFile2 = "vCenter2.xlsx"
# Start cli of RVTools
Write-Host "Start export for vCenter $VCServer" -ForegroundColor DarkYellow
$Arguments = "-u $User -p $EncryptedPassword -s $VCServer -c ExportAll2xlsx -d $XlsxDir2 -f $XlsxFile2"
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
}
# -----------------------------------------------------
# Set parameters for vCenter 3 and start RVTools export
# -----------------------------------------------------
[string] $VCServer = "192.168.2.220"
[string] $User = "vsphere.local\rob"
# use -passthroughAuth or an encrypted password. You can encrypt your password with the provided PowerShell script RVToolsPasswordEncryption.ps1
[string] $EncryptedPassword = "_RVToolsV3PWD01000000d08c9ddf0115d1118c7a00c04fc297eb01000000325cf1e07062a848a422825c7ccd19f100000000020000000000106600000001000020000000397128ff49bbd394092555bac4ea58b61232edf65d9c19f61f94516857e87e3c000000000e8000000002000020000000d068a8d3251e73170b8fd63e329aecb048885da168bc6a24c363e18f1a0a446c20000000efca9029a70b20b9d2d1042d3f34a1c370b965c085f2933a3fa453a0dd5392324000000084b7ad15d00299271c13ce7f44ad45fb6a6d8ded586f22a27"
[string] $XlsxDir3 = "C:\RVTools"
[string] $XlsxFile3 = "vCenter3.xlsx"
# Start cli of RVTools
Write-Host "Start export for vCenter $VCServer" -ForegroundColor DarkYellow
$Arguments = "-u $User -p $EncryptedPassword -s $VCServer -c ExportAll2xlsx -d $XlsxDir3 -f $XlsxFile3"
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
}
# -----------------------------------------------
# Merge xlsx files vCenter1 + vCenter2 + vCenter3
# -----------------------------------------------
$OutputFile = "C:\RVTools\vCenter123.xlsx"
& .\RVToolsMergeExcelFiles.exe -input "$XlsxDir1\$XlsxFile1;$XlsxDir2\$XlsxFile2;$XlsxDir3\$XlsxFile3" -output $OutputFile -overwrite -verbose
# ---------------------
# Mail output xlsx file
# ---------------------
[string] $SMTPserver = "your smtp server"
[string] $SMTPport = "25"
[string] $Mailto = "your email send to address"
[string] $MailFrom = "Your email send from address"
[string] $MailSubject = "`"RVTools export all for vCenter 1 and 2`""
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Понятно, что данный скрипт следует отредактировать под ваши нужды.
Ещё вам может пригодиться полезный параметр -BypassSSLCheck для отключения проверки SSL сертификатов.
