【VMware vSphere】使用RVTools中的PowerShell脚本创建导出vSphere环境信息的自动化任务。

vmware,vsphere,rvtools,powershell · 浏览次数 : 0

小编点评

本文介绍了RVTools,一款免费的Windows实用工具,用于收集和显示VMware vSphere环境中的相关信息。RVTools基于VMware vSphere Management SDK 8.0和CIS REST API,提供了丰富的功能来监控和管理VMware环境。文章还提到了RVTools被Dell公司收购,但其免费使用策略保持不变。 1. **RVTools简介**:RVTools是一款免费的Windows实用工具,用于收集和显示VMware vSphere环境中的相关信息,如虚拟机、主机及集群等配置。 2. **功能与优势**:RVTools利用VMware vSphere Management SDK 8.0和CIS REST API提供的丰富数据来直接获取和收集信息,帮助管理员监控和管理VMware环境。 3. **发展历程**:RVTools由Rob de Veij创立,后被Dell公司收购,但免费使用策略保持不变。 4. **版本更新**:RVTools的最新版本为4.6.1,支持vSphere 5.x、6.x、7.x、8.x版本,Windows安装环境需要.NET 4.6.2支持。 5. **安装与使用**:RVTools默认安装在"C:\Program Files (x86)\Dell\RVTools"文件夹,可以通过PowerShell查看其内容和执行相关脚本。 6. **命令行选项**:RVTools.exe提供了多种命令行选项,包括连接ESXi主机或vCenter、导出选项和导出目录等。 7. **自动化任务**:RVToolsBatchMultipleVCs.ps1脚本文件可以使用PowerShell自动导出vSphere环境信息,并通过Windows的任务计划程序实现自动化任务。 8. **其他工具**:RVTools还包括RVToolsMergeExcelFiles.exe和RVToolsSendMail.exe两个有用的工具,分别用于合并导出的Excel表格文件和发送邮件通知管理员。 总的来说,RVTools是一个功能强大的工具,可以帮助管理员有效地监控和管理VMware vSphere环境,无论是通过命令行还是任务计划程序。

正文

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 Export<tab>2xlsx    //将RVTools中特定<选项卡>导出为 xlsx 格式。
  • -c Export<tab>2csv    //将RVTools中特定<选项卡>导出为 csv 格式。

这里<tab>选项卡支持以下

    • 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 脚本中的内容。

# =============================================================================================================
# 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

我们来详细看一下 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 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
}


# Back to starting dir
Set-Location $SaveCurrentDir

现在你可以使用这个脚本在 PowerShell 中执行,确定是否能正常导出。如果能正常导出,那可以进行后续步骤。

Windows 运行 Win+R 键,然后输入“taskschd.msc”,按 Enter 键打开任务计划程序。

点击右边的“创建基本任务”,设置任务的名称。

设置任务的执行时间,选择“每天”,并设置具体执行的时间。

设置任务执行的操作,选择“启动程序”,设置执行程序为“PowerShell”,添加执行参数“C:\RVTools\Task\RVToolsBatchVC.ps1”。

确定任务,勾选下面的复选框,点击完成。

在“安全选项”设置中,勾选“不管用户是否登录都要运行”,配置合适的系统类型,点击确定并输入执行任务的用户密码。

最后,等待任务执行,并查看结果。

参考:《RVTools Documentation》

与【VMware vSphere】使用RVTools中的PowerShell脚本创建导出vSphere环境信息的自动化任务。相似的内容:

【VMware vSphere】使用RVTools中的PowerShell脚本创建导出vSphere环境信息的自动化任务。

RVTools 是 VMware 生态系统中一个非常受欢迎且免费的 Windows 实用工具,用于收集并显示 VMware vSphere 环境中的相关信息,如虚拟机、主机及集群等相关配置。RVTools 利用 VMware vSphere Management SDK 8.0 和 CIS REST

【VMware vSphere】使用vSphere Lifecycle Manager(vLCM)管理独立主机和集群的生命周期。

vSphere Lifecycle Manager(vLCM)是 vSphere 7 中引入的一项新功能,它提供了一种集中式、自动化和简单性的方式来管理和升级 vSphere 基础架构组件(如vCenter、ESXi主机和NSX)的生命周期。 VMware 早期用于 vSphere 升级和补丁管理的

【转帖】ESXI上安装和使用MegaCli

https://www.diewufeiyang.com/post/964.html 一、第一步获取安装文件,官网目前搜索也找不到了,这里附件提供之前保存的安装文件 点击下载 二、使用VMware vSphere Client连接ESXI在配置里启用ssh服务,然后通过ssh客户端工具连接ESXI,

VMware vSphere ESXi 7.0安装配置

VMware vSphere ESXi 7.0安装配置 环境说明: 1、物理服务器:联想System X 3650M5服务器 (x64 CPU 必须能够支持硬件虚拟化(Intel VT-x 或 AMD RVI)) (没有服务器的小伙伴也可以使用虚拟机安装测试,最低配置:2个CPU内核、8G内存、32

centos7.9 扩容swap分区

情况说明:在VMware vsphere的虚拟化平台下,为了快速部署虚拟服务器,我们常常使用模板部署虚拟机。但真实业务有时要求的文件系统分区和大小常常与模板不同,这时便需要自定义硬件资源和使用 LVM 方式扩容。在定义硬盘的时候我们可以在原有的硬盘上直接增加,然后虚拟机创建完成后再进入系统进行扩容,

centos7.6安装本地yum源

centos7.6安装本地yum源 前言:文章内容可能会因环境不同而有所差异,所谓集思广益说不定灵感就来了呢; 文章初衷旨在交流学习、记录个人成长,如果能帮助到您,那就点个赞噢。 环境说明: 1、本实验使用的是VMware vsphere虚拟机,操作系统安装可参考链接:CentOS7.6系统安装和网

[转帖]VMware vSphere 8.0 IA - 企业级工作负载平台

https://sysin.org/blog/vmware-vsphere-8/ vSphere 8.0 在发布数周后,终于可以下载正式版了,了解新增功能请访问:VMware vSphere 8 新增功能。 vSphere+:多云工作负载平台 通过部署高价值云服务,轻松构建、运行、管理和保护传统应用

VMware vSphere vCenter Server Appliance 7.0安装配置

VMware vSphere vCenter Server Appliance 7.0安装配置 环境说明: 1、将vCenter ServerAppliance部署在ESXi主机上,安装配置好ESXi主机可查看:VMware vSphere ESXi 7.0安装配置 - 张不留行 - 博客园 (cn

[转帖]vSphere虚拟化平台(vCenter和ESXi)升级注意事项

https://www.dinghui.org/vmware-vsphere-upgrade.html 最近两年做了蛮多vSphere升级项目,几点思路,做一下汇总整理如下供参考: 一、升级必要性 1、软件生命周期:在评估软件升级必要性分析中,vSphere软件生命周期是重点考虑的问题; 生命周期查

问题记录:VMware vSphere vCenter 7.0 上传文件失败

问题记录:VMware vSphere vCenter 7.0 上传文件失败 环境说明: VC版本:VMware vSphere vCenter 7.0 ESXi版本:VMware vSphere ESXi 7.0 问题现象: 因为新建虚拟机资产前需要先上传iso文件和ova文件,想把文件上传到da