RVTools 是 VMware 生态体系中一个非常受欢迎且免费的 Windows 实用工具,用于收集并显示 VMware vSphere 环境中的相关信息,如虚拟机、主机及集群等相关设置。RVTools 利用 VMware vSphere Management SDK 8.0 和 CIS REST API 提供的丰富数据来直接获取和收集信息,这在管理员对 VMware 环境进行监控和管理时非常有用。
RVTools 的首创人是 Rob de Veij,不过在 2023 年的时候被 Dell 公司收购,同时 Rob 作为戴尔团队的一员,也一直在支持 RVTools 的发展。当然 RVTools 被 Dell 收购以后,一直没有改变它完全免费使用的计谋,这一点值得称赞。RVTools 这个工具专注于 VMware 环境,实在,Dell 公司同时还有另外一个和 RVTools 类似功能的产品,叫 Live Optics,它除了 vSphere 环境以外,还可以用于其他云环境,如 Hyper-V、KVM 等,关于这个工具的具体介绍和使用可以查看 “Live Optics を利用した仮想化基盤の詳細アセスメント(2024年版)” 这篇文章(可能需要邪术)。
RVTools 当前最新版本为 RVTools 4.6.1,支持 vSphere 5.x、6.x、7.x、8.x 版本,Windows 安装环境需要 .NET 4.6.2 支持。RVTools 默认安装在“C:\Program Files (x86)\Dell\RVTools”文件夹,如果是自界说安装那找到自行设置的文件夹即可,打开文件资源管理器导航到该文件夹后可以看到如下图内容。
我后面就不再使用文件资源管理器进行查看,全部通过 PowerShell 查看,你可以打开 PowerShell 使用下面命令进入到 RVTools 的安装文件夹。- cd "C:\Program Files (x86)\Dell\RVTools"
复制代码
在 RVTools 的安装目录里,提供了如下图所示的 PowerShell 示例脚本文件,而此次重点要使用到的是 RVToolsBatchMultipleVCs.ps1 脚本,通过这个脚本文件可以使用 PowerShell 自动导出 vSphere 环境信息,再配合 Windows 的使命计划程序实现自动化使命。当然,配合这个脚本使用的还有另外三个脚本文件,紧张会用到 RVToolsPasswordEncryption.ps1 脚本,使用这个脚本对暗码进行加密,另外两个脚本可选使用,RVToolsCreateLocalUser.ps1 脚本用于创建专用于执行自动化使命的本地用户,RVToolsFindBadVM.ps1 脚本用于查找未被 RVTools 导出到清单的虚拟机(通常是具有大量磁盘文件需要被整合的虚拟机)。
实在,RVToolsBatchMultipleVCs.ps1 脚本文件中真正使用到的是如下图所示的可执行程序。默认环境下,安装完 RVTools 使用到的 GUI 客户端就是 RVTools.exe 执行程序,固然我们都是用图形化界面,不过 RVTools.exe 执行程序也可以通过命令行运行,也就是 RVToolsBatchMultipleVCs.ps1 脚本所应用的方法。RVToolsMergeExcelFiles.exe 和 RVToolsSendMail.exe 执行程序是另外两个有用的工具,第一个可以将导出的多个 EXCEL 表格文件合成一个表格文件,第二个可以将这个导出的表格文件通过设置 SMTP 服务器后以邮件的方式发送给管理员。
RVToolsMergeExcelFiles.exe 和 RVToolsSendMail.exe 工具可选,这在 RVToolsBatchMultipleVCs.ps1 脚本中可以设置,不过重点需要使用 RVTools.exe 执行程序,下面具体介绍一下这个程序的命令行选项。
RVTools.exe 命令行可提供使用以下选项:
- -s //需要连接的 ESXi 主机或 vCenter(域名或IP地点)。
- -passthroughAuth //使用直通身份验证连接到 ESXi 主机或 vCenter(使用当前的 Windows 登录凭据)。
- -u //用于连接到 ESXi 主机或 vCenter 的用户名。
- -p //用于连接到 ESXi 主机或 vCenter 的暗码。
- -c //使用的导出选项。
- -d //设置导出的目录。
- -f //设置导出的 XLSX 或 CSV 格式的文件名。如果不设置文件名,RVTools 将创建一个带有日期时间戳的文件名。
下列选项适用于选择 -passthroughAuth 时使用:
- -ExcludeCustomAnnotations //不导出自界说注释字段。
- -ExcludeTags //不导出标具名段。
- -DBColumnNames //使用 RVTools intenal 列名称。如果将导出上传到 DBMS,则很有用。
- -GetFriendlyNames //如果使用 vSAN 并希望导出显示友好的 vSAN 名称而不是 UUID。
- -GetFileInfo //将添补 vFileInfo 选项卡页。注意:这可能需要很长时间。
关于 -c 导出选项,支持以下导出的信息:
- -c ExportAll2xlsx //将RVTools中全部选项卡导出为 xlsx 格式。
- -c ExportAll2csv //将RVTools中全部选项卡导出为 csv 格式。
- -c Export2xlsx //将RVTools中特定导出为 xlsx 格式。
- -c Export2csv //将RVTools中特定导出为 csv 格式。
这里选项卡支持以下值:
- vInfo
- vCpu
- vMemory
- vDisk
- vPartition
- vNetwork
- vCD
- vUSB
- vSnapshot
- vTools
- vSource
- vRP
- vCluster
- vHost
- vHBA
- vNic
- vSwitch
- vPort
- dvSwitch
- dvPort
- vSC+VMK
- vDatastore
- vMultiPath
- vLicense
- vFileInfo
- vHealth
在相识了 RVTools 相关命令行选项及含义后,下面演示一下使用 RVTools 命令行来完成 GUI 完成的相关工作。
运行 RVTools 命令使用 pass-through 的认证方式来连接 ESXi 主机或 vCenter,pass-through 认证方式就是使用当前 Windows 登录用户及凭证,如果 vSphere 环境已经参加了 AD 域环境,同时当前运行 RVTools 的Windows 终端用户是域用户,则可以使用这种方式,否则大部门环境下是使用下面用户名+暗码的方法连接到 ESXi 主机或 vCenter。- .\RVTools.exe –passthroughAuth –s vcsa8-02.mulab.local
复制代码 运行 RVTools 命令使用 userid+password 的认证方式来连接 ESXi 主机或 vCenter,大部门环境下使用这种方式。注意,使用这种方式需要提前使用 RVTools 安装目录中的 RVToolsPasswordEncryption.ps1 脚本将需要连接的 ESXi 主机或 vCenter 的暗码进行加密,否则如果直接使用 ESXi 主机或 vCenter 的暗码进入连接,则会报“Login Failed: Cannot complete login due to an incorrect user name or password.”错误,RVTools 工具不支持明文连接,使用加密后的暗码进行连接也保证了真实的暗码不被泄漏的风险。
运行 RVToolsPasswordEncryption.ps1 脚本后,输入 ESXi 主机或 vCenter 的登录暗码完成加密,得到输出加密后的暗码。- .\RVToolsPasswordEncryption.ps1
复制代码
你可以直接使用输出后的加密暗码,然后使用 userid+password 的认证方式来连接 ESXi 主机或 vCenter。- .\RVTools.exe -s vcsa8-02.mulab.local -u vsphere.local\administrator -p _RVToolsV3PWD01000000d08c9ddf0115d1118c7a00c04fc297eb010000001af35e7a80eab64998aeed360314277d00000000020000000000106600000001000020000000c6eda441a4fb0787f966d9990f8ce505de268890c1df387421922247dd951382000000000e80000000020000200000005d1195f9f473904b4433882ff823b62de740fb2c0f10352dd6dc1e3ffe7e6a0b3000000097c976cd9792dcc693f022efb4d32187b1a5705676255adc402dc87233a448dab076e41e69f4d1ff27de235d3226343b4000000061c72a72a652d0df185f3767520c01e0faaadbbe9cc307651deee3288dcee3ea7b7198d8d42e145d1a521d4e2cbbe67bb8a45db4756a2f1fa5d4ebc4640829e7
复制代码
不过由于加密后的暗码太长了,可以给加密后的暗码创建一个变量,这样直接带入变量要方便一些。- $password = "_RVToolsV3PWD01000000d08c9ddf0115d1118c7a00c04fc297eb010000001af35e7a80eab64998aeed360314277d00000000020000000000106600000001000020000000c6eda441a4fb0787f966d9990f8ce505de268890c1df387421922247dd951382000000000e80000000020000200000005d1195f9f473904b4433882ff823b62de740fb2c0f10352dd6dc1e3ffe7e6a0b3000000097c976cd9792dcc693f022efb4d32187b1a5705676255adc402dc87233a448dab076e41e69f4d1ff27de235d3226343b4000000061c72a72a652d0df185f3767520c01e0faaadbbe9cc307651deee3288dcee3ea7b7198d8d42e145d1a521d4e2cbbe67bb8a45db4756a2f1fa5d4ebc4640829e7"
复制代码
运行 RVTools 命令使用 ExportAll2xlsx 导出选项将全部选项卡以 XLSX 格式导出到指定目录,使用 -f 选项指定导出文件的名称,不指定则导出带有时间戳的文件名。- .\RVTools.exe -s vcsa8-02.mulab.local -u vsphere.local\administrator -p $password -c ExportAll2xlsx -d C:\RVTools\Temp\ -f all
复制代码
运行 RVTools 命令使用 ExportAll2csv 导出选项将全部选项卡以 CSV 格式导出到指定目录。- .\RVTools.exe -s vcsa8-02.mulab.local -u vsphere.local\administrator -p $password -c ExportAll2csv -d C:\RVTools\Temp\
复制代码
运行 RVTools 命令使用 ExportvInfo2xlsx 导出选项将 vInfo 选项卡以 XLSX 格式导出到指定目录,使用 -f 选项指定导出文件的名称,不指定则导出带有时间戳的文件名。- .\RVTools.exe -s vcsa8-02.mulab.local -u vsphere.local\administrator -p $password -c ExportvInfo2xlsx -d C:\RVTools\Temp\ -f vInfo
复制代码
运行 RVTools 命令使用 ExportvInfo2csv 导出选项将 vInfo 选项卡以 CSV 格式导出到指定目录,使用 -f 选项指定导出文件的名称,不指定则导出带有时间戳的文件名。- .\RVTools.exe -s vcsa8-02.mulab.local -u vsphere.local\administrator -p $password -c ExportvInfo2csv -d C:\RVTools\Temp\ -f vInfo
复制代码
运行 RVTools 命令使用 ExportvHealth2xlsx 导出选项将 vHealth 选项卡以 XLSX 格式导出到指定目录,使用 -f 选项指定导出文件的名称,不指定则导出带有时间戳的文件名。
在相识了 RVTools 的命令行使用方式,现在让我们回到 PowerShell 脚本 RVToolsBatchMultipleVCs.ps1 中来,看看如何通过脚本创建自动化导出使命。先来看一下 RVToolsBatchMultipleVCs.ps1 脚本中的内容。我们来具体看一下 RVToolsBatchMultipleVCs.ps1 脚本的组成部门,分为几个板块,下面一个一个来阐明这几个板块的作用。下面脚本开头中的是介绍,这个脚本文件可以执行多个 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
- #>
复制代码 下面内容表示设置环境中 RVTools 的安装路径,如果自界说安装在其他目录,则需要在“$RVToolsPath” 后面改成自行设置的目录。- # 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
复制代码 下面内容表示 RVTools 真实执行导出 vCenter 环境信息的脚本命令,由于这是一个批量导出多个 vCenter 的脚本,所以可以看到有三个 vCenter 相同的命令列表信息,由于都是一样的,所以我只说此中一个,如果环境中只有一个 vCenter ,则只需要把脚本中的另外两个删掉即可。
- “$VCServer”后面表示界说自己环境中的 ESXi 主机或 vCenter 的地点(域名或IP地点)。
- “$User” 后面表示界说自己环境中的 ESXi 主机或 vCenter 的用户名。
- “$EncryptedPassword”后面表示界说自己环境中的 ESXi 主机或 vCenter 的暗码。注意,需要提前使用 RVToolsPasswordEncryption.ps1 脚本将 ESXi 主机或 vCenter 的登录暗码生成加密暗码,如果使用了passthrough 认证连接方式,则也需要加密 Windows 登录凭证,参考前面。
- “$XlsxDir1”后面表示界说自己环境中的导出文件的文件夹。
- “$XlsxFile1”后面表示界说导出的文件的名称。
- “$Arguments”后面表示界说执行导出的命令。默认 -c 导出选项为导出全部选项卡为 XLSX 格式,可自行设置导出选项,若不使用 -f 选项,则导出带有时间戳的文件名,参考前面。
- # -----------------------------------------------------
- # 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
- }
复制代码 下面内容表示将上面导出的多个 vCenter 的 Excel 文件合并成一个表格文件并输出到指定目录,这里就使用了 RVTools 安装目录中的 RVToolsMergeExcelFiles.exe 执行程序,如果环境中具有多个 vCenter 可以使用这个功能,如果没有或不想使用这个功能,那可以把这块内容删掉即可。- # -----------------------------------------------
- # Merge xlsx files vCenter1 + vCenter2 + vCenter3
- # -----------------------------------------------
- $OutputFile = "C:\RVTools\vCenter123.xlsx"
- & .\RVToolsMergeExcelFiles.exe -input "$XlsxDir1\$XlsxFile1;$XlsxDir2\$XlsxFile2;$XlsxDir3\$XlsxFile3" -output $OutputFile -overwrite -verbose
复制代码 下面内容表示将上面合并输出的 Excel 文件通过邮件发送给管理员,这里就使用了 RVTools 安装目录中的 RVToolsSendmail.exe 执行程序,默认环境下在执行命令的末了一行被注释掉了,如果需要用到这个功能,可以设置相关信息并将末了一行的注释“#”删撤除,如果不用到这个功能可以不管它或者将这块内容删掉。- # ---------------------
- # 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
复制代码 颠末上面对 RVToolsBatchMultipleVCs.ps1 脚本内容的相识,联合自身环境中的环境,可以修改脚本中的内容调整为自己使用的脚本。比如,我当前环境中只想对一个 vCenter 执行导出使命,我调整的脚本如下。- # =============================================================================================================# Script: RVToolsBatchVC.ps1# Version: 1.0# Date: June, 2024# By: JUNIOR MU# =============================================================================================================# 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 = "vcsa8-02.mulab.local"[string] $User = "vsphere.local\administrator"# use -passthroughAuth or an encrypted password. You can encrypt your password with the provided PowerShell script RVToolsPasswordEncryption.ps1[string] $EncryptedPassword = "_RVToolsV3PWD01000000d08c9ddf0115d1118c7a00c04fc297eb010000001af35e7a80eab64998aeed360314277d00000000020000000000106600000001000020000000c6eda441a4fb0787f966d9990f8ce505de268890c1df387421922247dd951382000000000e80000000020000200000005d1195f9f473904b4433882ff823b62de740fb2c0f10352dd6dc1e3ffe7e6a0b3000000097c976cd9792dcc693f022efb4d32187b1a5705676255adc402dc87233a448dab076e41e69f4d1ff27de235d3226343b4000000061c72a72a652d0df185f3767520c01e0faaadbbe9cc307651deee3288dcee3ea7b7198d8d42e145d1a521d4e2cbbe67bb8a45db4756a2f1fa5d4ebc4640829e7" [string] $XlsxDir1 = "C:\RVTools\Task"[string] $XlsxFile1 = "vCenter.xlsx"# Start cli of RVToolsWrite-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 -PassThruif($Process.ExitCode -eq -1){ Write-Host "Error: Export failed! RVTools returned exitcode -1, probably a connection error! Script is stopped" -ForegroundColor Red exit 1}# Back to starting dir
- Set-Location $SaveCurrentDir
复制代码 现在你可以使用这个脚本在 PowerShell 中执行,确定是否能正常导出。如果能正常导出,那可以进行后续步调。
Windows 运行 Win+R 键,然后输入“taskschd.msc”,按 Enter 键打开使命计划程序。
点击右边的“创建基本使命”,设置使命的名称。
设置使命的执行时间,选择“每天”,并设置具体执行的时间。
设置使命执行的操纵,选择“启动程序”,设置执行程序为“PowerShell”,添加执行参数“C:\RVTools\Task\RVToolsBatchVC.ps1”。
确定使命,勾选下面的复选框,点击完成。
在“安全选项”设置中,勾选“不管用户是否登录都要运行”,设置符合的体系类型,点击确定并输入执行使命的用户暗码。
末了,等待使命执行,并查看结果。
参考:《RVTools Documentation》
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |