首页 > 系统相关 >【VMware vSphere】使用RVTools中的PowerShell脚本创建导出vSphere环境信息的自动化任务。

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

时间:2024-06-23 12:11:10浏览次数:28  
标签:vSphere exe string 导出 VMware vCenter PowerShell RVTools Arguments

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》

标签:vSphere,exe,string,导出,VMware,vCenter,PowerShell,RVTools,Arguments
From: https://www.cnblogs.com/juniormu/p/18260908

相关文章

  • 20240622-PowerShell5和PowerShell7在windows terminal中无法切换
    今天安装powertoys小工具commandNotFound的时候,提示要求powershell版本是7,而当前powershell版本是5,如下。但是powertoys中显示powershell7已经安装,如下图。主要问题在于powershell5的程序名是powershell.exe,而powershell7的程序名是pwsh.exe.windowsterminal每个选项卡默......
  • windows powershell 如何读取大文件前10行
    在WindowsPowerShell中,可以使用Get-Contentcmdlet来读取文件内容。对于大文件,直接使用Get-Content会加载整个文件,这可能会导致性能问题或内存溢出。为了避免这样的问题,我们可以通过指定读取的行数来获取文件的前几行。以下是一些常见的方法来读取大文件的前10行:Get-Cont......
  • VMware Workstation环境下,用作测试的客户端,ubuntu安装体验案例
    需求说明:作为学习者,为了学习网络技术,网络操作系统管理技术,学习者首先需要有台计算机,其次需要在自己的计算机安装学习要用到的网络操作系统、模拟软件等。但由于计算机上一般使用的是Windows10或Windows7桌面操作系统,而且或多或少有一些重要的数据、软件存放在硬盘里。那么......
  • SDN VMware NSX网络原理与实践- NSX-V 安全【2.8】
    7.1.2部署NSXEdge服务网关的资源分配        在部署NSXEdge服务网关的开始阶段,需要选择部署的Size。具体部署的资源分配如图7.2所示。其中,Compact的NSXEdge主要用于实验环境;Large的NSXEdge主要用于一般生产环境;当需要针对南北向流量实现高性能......
  • Windows Server 2022 OVF, updated Jun 2024 (sysin) - VMware 虚拟机模板
    WindowsServer2022OVF,updatedJun2024(sysin)-VMware虚拟机模板2024年6月版本更新,现在自动运行sysprep,支持ESXiHostClient部署请访问原文链接:https://sysin.org/blog/windows-server-2022-ovf/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org现在......
  • Windows Server 2019 OVF, updated Jun 2024 (sysin) - VMware 虚拟机模板
    WindowsServer2019OVF,updatedJun2024(sysin)-VMware虚拟机模板2024年6月版本更新,现在自动运行sysprep,支持ESXiHostClient部署请访问原文链接:https://sysin.org/blog/windows-server-2019-ovf/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgWindo......
  • Windows Server 2008 R2 OVF, updated Jun 2024 (sysin) - VMware 虚拟机模板
    WindowsServer2008R2OVF,updatedJun2024(sysin)-VMware虚拟机模板WindowsServer2008R2简体中文版OVF,2024年6月更新请访问原文链接:https://sysin.org/blog/windows-server-2008-r2-ovf/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgWindowsSe......
  • Windows Server 2016 OVF, updated Jun 2024 (sysin) - VMware 虚拟机模板
    WindowsServer2016OVF,updatedJun2024(sysin)-VMware虚拟机模板2024年6月版本更新,现在自动运行sysprep,支持ESXiHostClient部署请访问原文链接:https://sysin.org/blog/windows-server-2016-ovf/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org现在......
  • 【基础教学】保姆级手把手教学使用VMware安装kali虚拟机
    目录序言1.下载镜像1.1下载kali2.安装虚拟机2.1VM创建虚拟机2.2加载镜像2.3kali设置中文序言本文主要讲述如何使用VMware安装kali虚拟机。1.下载镜像1.1下载kali首先访问kali镜像地址,根据个人需求下载相应版本,我这里下载64位everything版本https://www.kali.org......
  • Windows的Gitlab Runner搭配的PowerShell脚本:自动下载Directory.Build.props相关文件
    简介GitlabRunner在Windows上运行之后,我们在.gitlab-ci.yml中编写script语句,思路和Linux是一样。但是考虑到Windows的特点,为了让程序员少接触一些知识点,以及给未来执行作业的时候预留更多的操作空间。简单说就是未来修改执行作业时候的逻辑,但是每个软件仓库根目录下的.gitlab-ci......