【VMware vSphere】使用RVTools中的PowerShell脚本创建导出vSphere环境信息 ...

宝塔山  金牌会员 | 2024-6-23 12:02:07 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 751|帖子 751|积分 2253

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 的安装文件夹。
  1. 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。
  1. .\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 的登录暗码完成加密,得到输出加密后的暗码。
  1. .\RVToolsPasswordEncryption.ps1
复制代码

你可以直接使用输出后的加密暗码,然后使用 userid+password 的认证方式来连接 ESXi 主机或 vCenter。
  1. .\RVTools.exe -s vcsa8-02.mulab.local -u vsphere.local\administrator -p _RVToolsV3PWD01000000d08c9ddf0115d1118c7a00c04fc297eb010000001af35e7a80eab64998aeed360314277d00000000020000000000106600000001000020000000c6eda441a4fb0787f966d9990f8ce505de268890c1df387421922247dd951382000000000e80000000020000200000005d1195f9f473904b4433882ff823b62de740fb2c0f10352dd6dc1e3ffe7e6a0b3000000097c976cd9792dcc693f022efb4d32187b1a5705676255adc402dc87233a448dab076e41e69f4d1ff27de235d3226343b4000000061c72a72a652d0df185f3767520c01e0faaadbbe9cc307651deee3288dcee3ea7b7198d8d42e145d1a521d4e2cbbe67bb8a45db4756a2f1fa5d4ebc4640829e7
复制代码

不过由于加密后的暗码太长了,可以给加密后的暗码创建一个变量,这样直接带入变量要方便一些。
  1. $password = "_RVToolsV3PWD01000000d08c9ddf0115d1118c7a00c04fc297eb010000001af35e7a80eab64998aeed360314277d00000000020000000000106600000001000020000000c6eda441a4fb0787f966d9990f8ce505de268890c1df387421922247dd951382000000000e80000000020000200000005d1195f9f473904b4433882ff823b62de740fb2c0f10352dd6dc1e3ffe7e6a0b3000000097c976cd9792dcc693f022efb4d32187b1a5705676255adc402dc87233a448dab076e41e69f4d1ff27de235d3226343b4000000061c72a72a652d0df185f3767520c01e0faaadbbe9cc307651deee3288dcee3ea7b7198d8d42e145d1a521d4e2cbbe67bb8a45db4756a2f1fa5d4ebc4640829e7"
复制代码

运行 RVTools 命令使用 ExportAll2xlsx 导出选项将全部选项卡以 XLSX 格式导出到指定目录,使用 -f 选项指定导出文件的名称,不指定则导出带有时间戳的文件名。
  1. .\RVTools.exe -s vcsa8-02.mulab.local -u vsphere.local\administrator -p $password -c ExportAll2xlsx -d C:\RVTools\Temp\ -f all
复制代码


运行 RVTools 命令使用 ExportAll2csv 导出选项将全部选项卡以 CSV 格式导出到指定目录。
  1. .\RVTools.exe -s vcsa8-02.mulab.local -u vsphere.local\administrator -p $password -c ExportAll2csv -d C:\RVTools\Temp\
复制代码


运行 RVTools 命令使用 ExportvInfo2xlsx 导出选项将 vInfo 选项卡以 XLSX 格式导出到指定目录,使用 -f 选项指定导出文件的名称,不指定则导出带有时间戳的文件名。
  1. .\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 选项指定导出文件的名称,不指定则导出带有时间戳的文件名。
  1. .\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 脚本中的内容。
  1. # =============================================================================================================
  2. # Script:    RVToolsBatchMultipleVCs.ps1
  3. # Version:   1.4
  4. # Date:      November, 2023
  5. # By:        Dell Technologies
  6. # =============================================================================================================
  7. <#
  8. .SYNOPSIS
  9. With this example script you can start the the RVTools export all to xlsx function for multiple vCenter servers.
  10. The output xlsx files will be merged to one xlsx file which will be mailed
  11.        
  12. .DESCRIPTION
  13. With this example script you can start the the RVTools export all to xlsx function for multiple vCenter servers.
  14. The output xlsx files will be merged to one xlsx file which will be mailed
  15. .EXAMPLE
  16. .\RVToolsBatchMultipleVCs.ps1
  17. #>
  18. # Save current directory
  19. $SaveCurrentDir = (get-location).Path
  20. # Set RVTools path
  21. [string] $RVToolsPath = "C:\Program Files (x86)\Dell\RVTools"
  22. # cd to RVTools directory
  23. set-location $RVToolsPath
  24. # -----------------------------------------------------
  25. # Set parameters for vCenter 1 and start RVTools export
  26. # -----------------------------------------------------
  27. [string] $VCServer = "192.168.2.220"                                                    # my test vCenter server
  28. [string] $User = "vsphere.local\rob"                                                   
  29. # use -passthroughAuth or an encrypted password. You can encrypt your password with the provided PowerShell script RVToolsPasswordEncryption.ps1
  30. [string] $EncryptedPassword = "_RVToolsV3PWD01000000d08c9ddf0115d1118c7a00c04fc297eb01000000325cf1e07062a848a422825c7ccd19f100000000020000000000106600000001000020000000397128ff49bbd394092555bac4ea58b61232edf65d9c19f61f94516857e87e3c000000000e8000000002000020000000d068a8d3251e73170b8fd63e329aecb048885da168bc6a24c363e18f1a0a446c20000000efca9029a70b20b9d2d1042d3f34a1c370b965c085f2933a3fa453a0dd5392324000000084b7ad15d00299271c13ce7f44ad45fb6a6d8ded586f22a27"
  31. [string] $XlsxDir1 = "C:\RVTools"
  32. [string] $XlsxFile1 = "vCenter1.xlsx"
  33. # Start cli of RVTools
  34. Write-Host "Start export for vCenter $VCServer" -ForegroundColor DarkYellow
  35. $Arguments = "-u $User -p $EncryptedPassword -s $VCServer -c ExportAll2xlsx -d $XlsxDir1 -f $XlsxFile1"
  36. Write-Host $Arguments
  37. $Process = Start-Process -FilePath ".\RVTools.exe" -ArgumentList $Arguments -NoNewWindow -Wait -PassThru
  38. if($Process.ExitCode -eq -1)
  39. {
  40.     Write-Host "Error: Export failed! RVTools returned exitcode -1, probably a connection error! Script is stopped" -ForegroundColor Red
  41.     exit 1
  42. }
  43. # -----------------------------------------------------
  44. # Set parameters for vCenter 2 and start RVTools export
  45. # -----------------------------------------------------
  46. [string] $VCServer = "192.168.2.220"
  47. [string] $User = "vsphere.local\rob"
  48. # use -passthroughAuth or an encrypted password. You can encrypt your password with the provided PowerShell script RVToolsPasswordEncryption.ps1
  49. [string] $EncryptedPassword = "_RVToolsV3PWD01000000d08c9ddf0115d1118c7a00c04fc297eb01000000325cf1e07062a848a422825c7ccd19f100000000020000000000106600000001000020000000397128ff49bbd394092555bac4ea58b61232edf65d9c19f61f94516857e87e3c000000000e8000000002000020000000d068a8d3251e73170b8fd63e329aecb048885da168bc6a24c363e18f1a0a446c20000000efca9029a70b20b9d2d1042d3f34a1c370b965c085f2933a3fa453a0dd5392324000000084b7ad15d00299271c13ce7f44ad45fb6a6d8ded586f22a27"
  50. [string] $XlsxDir2 = "C:\RVTools"
  51. [string] $XlsxFile2 = "vCenter2.xlsx"
  52. # Start cli of RVTools
  53. Write-Host "Start export for vCenter $VCServer" -ForegroundColor DarkYellow
  54. $Arguments = "-u $User -p $EncryptedPassword -s $VCServer -c ExportAll2xlsx -d $XlsxDir2 -f $XlsxFile2"
  55. Write-Host $Arguments
  56. $Process = Start-Process -FilePath ".\RVTools.exe" -ArgumentList $Arguments -NoNewWindow -Wait -PassThru
  57. if($Process.ExitCode -eq -1)
  58. {
  59.     Write-Host "Error: Export failed! RVTools returned exitcode -1, probably a connection error! Script is stopped" -ForegroundColor Red
  60.     exit 1
  61. }
  62. # -----------------------------------------------------
  63. # Set parameters for vCenter 3 and start RVTools export
  64. # -----------------------------------------------------
  65. [string] $VCServer = "192.168.2.220"
  66. [string] $User = "vsphere.local\rob"
  67. # use -passthroughAuth or an encrypted password. You can encrypt your password with the provided PowerShell script RVToolsPasswordEncryption.ps1
  68. [string] $EncryptedPassword = "_RVToolsV3PWD01000000d08c9ddf0115d1118c7a00c04fc297eb01000000325cf1e07062a848a422825c7ccd19f100000000020000000000106600000001000020000000397128ff49bbd394092555bac4ea58b61232edf65d9c19f61f94516857e87e3c000000000e8000000002000020000000d068a8d3251e73170b8fd63e329aecb048885da168bc6a24c363e18f1a0a446c20000000efca9029a70b20b9d2d1042d3f34a1c370b965c085f2933a3fa453a0dd5392324000000084b7ad15d00299271c13ce7f44ad45fb6a6d8ded586f22a27"
  69. [string] $XlsxDir3 = "C:\RVTools"
  70. [string] $XlsxFile3 = "vCenter3.xlsx"
  71. # Start cli of RVTools
  72. Write-Host "Start export for vCenter $VCServer" -ForegroundColor DarkYellow
  73. $Arguments = "-u $User -p $EncryptedPassword -s $VCServer -c ExportAll2xlsx -d $XlsxDir3 -f $XlsxFile3"
  74. Write-Host $Arguments
  75. $Process = Start-Process -FilePath ".\RVTools.exe" -ArgumentList $Arguments -NoNewWindow -Wait -PassThru
  76. if($Process.ExitCode -eq -1)
  77. {
  78.     Write-Host "Error: Export failed! RVTools returned exitcode -1, probably a connection error! Script is stopped" -ForegroundColor Red
  79.     exit 1
  80. }
  81. # -----------------------------------------------
  82. # Merge xlsx files vCenter1 + vCenter2 + vCenter3
  83. # -----------------------------------------------
  84. $OutputFile = "C:\RVTools\vCenter123.xlsx"
  85. & .\RVToolsMergeExcelFiles.exe -input "$XlsxDir1\$XlsxFile1;$XlsxDir2\$XlsxFile2;$XlsxDir3\$XlsxFile3" -output $OutputFile -overwrite -verbose
  86. # ---------------------
  87. # Mail output xlsx file
  88. # ---------------------
  89. [string] $SMTPserver = "your smtp server"
  90. [string] $SMTPport = "25"
  91. [string] $Mailto = "your email send to address"
  92. [string] $MailFrom = "Your email send from address"
  93. [string] $MailSubject = "`"RVTools export all for vCenter 1 and 2`""
  94. Write-Host "Send output file by mail" -ForegroundColor DarkYellow
  95. $Arguments = "/SMTPserver $SMTPserver /smtpport $SMTPport /mailto $Mailto /mailfrom $Mailfrom /mailsubject $Mailsubject /attachment  $OutputFile"
  96. Write-Host $Arguments
  97. #Start-Process -FilePath ".\RVToolsSendmail.exe" -ArgumentList $Arguments -NoNewWindow -Wait
  98. # Back to starting dir
  99. Set-Location $SaveCurrentDir
复制代码
我们来具体看一下 RVToolsBatchMultipleVCs.ps1 脚本的组成部门,分为几个板块,下面一个一个来阐明这几个板块的作用。下面脚本开头中的是介绍,这个脚本文件可以执行多个 vCenter 的导出使命。
  1. # =============================================================================================================
  2. # Script:    RVToolsBatchMultipleVCs.ps1
  3. # Version:   1.4
  4. # Date:      November, 2023
  5. # By:        Dell Technologies
  6. # =============================================================================================================
  7. <#
  8. .SYNOPSIS
  9. With this example script you can start the the RVTools export all to xlsx function for multiple vCenter servers.
  10. The output xlsx files will be merged to one xlsx file which will be mailed
  11.        
  12. .DESCRIPTION
  13. With this example script you can start the the RVTools export all to xlsx function for multiple vCenter servers.
  14. The output xlsx files will be merged to one xlsx file which will be mailed
  15. .EXAMPLE
  16. .\RVToolsBatchMultipleVCs.ps1
  17. #>
复制代码
下面内容表示设置环境中 RVTools 的安装路径,如果自界说安装在其他目录,则需要在“$RVToolsPath” 后面改成自行设置的目录。
  1. # Save current directory
  2. $SaveCurrentDir = (get-location).Path
  3. # Set RVTools path
  4. [string] $RVToolsPath = "C:\Program Files (x86)\Dell\RVTools"
  5. # cd to RVTools directory
  6. 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 选项,则导出带有时间戳的文件名,参考前面。
  1. # -----------------------------------------------------
  2. # Set parameters for vCenter 1 and start RVTools export
  3. # -----------------------------------------------------
  4. [string] $VCServer = "192.168.2.220"                                                    # my test vCenter server
  5. [string] $User = "vsphere.local\rob"                                                   
  6. # use -passthroughAuth or an encrypted password. You can encrypt your password with the provided PowerShell script RVToolsPasswordEncryption.ps1
  7. [string] $EncryptedPassword = "_RVToolsV3PWD01000000d08c9ddf0115d1118c7a00c04fc297eb01000000325cf1e07062a848a422825c7ccd19f100000000020000000000106600000001000020000000397128ff49bbd394092555bac4ea58b61232edf65d9c19f61f94516857e87e3c000000000e8000000002000020000000d068a8d3251e73170b8fd63e329aecb048885da168bc6a24c363e18f1a0a446c20000000efca9029a70b20b9d2d1042d3f34a1c370b965c085f2933a3fa453a0dd5392324000000084b7ad15d00299271c13ce7f44ad45fb6a6d8ded586f22a27"
  8. [string] $XlsxDir1 = "C:\RVTools"
  9. [string] $XlsxFile1 = "vCenter1.xlsx"
  10. # Start cli of RVTools
  11. Write-Host "Start export for vCenter $VCServer" -ForegroundColor DarkYellow
  12. $Arguments = "-u $User -p $EncryptedPassword -s $VCServer -c ExportAll2xlsx -d $XlsxDir1 -f $XlsxFile1"
  13. Write-Host $Arguments
  14. $Process = Start-Process -FilePath ".\RVTools.exe" -ArgumentList $Arguments -NoNewWindow -Wait -PassThru
  15. if($Process.ExitCode -eq -1)
  16. {
  17.     Write-Host "Error: Export failed! RVTools returned exitcode -1, probably a connection error! Script is stopped" -ForegroundColor Red
  18.     exit 1
  19. }
  20. # -----------------------------------------------------
  21. # Set parameters for vCenter 2 and start RVTools export
  22. # -----------------------------------------------------
  23. [string] $VCServer = "192.168.2.220"
  24. [string] $User = "vsphere.local\rob"
  25. # use -passthroughAuth or an encrypted password. You can encrypt your password with the provided PowerShell script RVToolsPasswordEncryption.ps1
  26. [string] $EncryptedPassword = "_RVToolsV3PWD01000000d08c9ddf0115d1118c7a00c04fc297eb01000000325cf1e07062a848a422825c7ccd19f100000000020000000000106600000001000020000000397128ff49bbd394092555bac4ea58b61232edf65d9c19f61f94516857e87e3c000000000e8000000002000020000000d068a8d3251e73170b8fd63e329aecb048885da168bc6a24c363e18f1a0a446c20000000efca9029a70b20b9d2d1042d3f34a1c370b965c085f2933a3fa453a0dd5392324000000084b7ad15d00299271c13ce7f44ad45fb6a6d8ded586f22a27"
  27. [string] $XlsxDir2 = "C:\RVTools"
  28. [string] $XlsxFile2 = "vCenter2.xlsx"
  29. # Start cli of RVTools
  30. Write-Host "Start export for vCenter $VCServer" -ForegroundColor DarkYellow
  31. $Arguments = "-u $User -p $EncryptedPassword -s $VCServer -c ExportAll2xlsx -d $XlsxDir2 -f $XlsxFile2"
  32. Write-Host $Arguments
  33. $Process = Start-Process -FilePath ".\RVTools.exe" -ArgumentList $Arguments -NoNewWindow -Wait -PassThru
  34. if($Process.ExitCode -eq -1)
  35. {
  36.     Write-Host "Error: Export failed! RVTools returned exitcode -1, probably a connection error! Script is stopped" -ForegroundColor Red
  37.     exit 1
  38. }
  39. # -----------------------------------------------------
  40. # Set parameters for vCenter 3 and start RVTools export
  41. # -----------------------------------------------------
  42. [string] $VCServer = "192.168.2.220"
  43. [string] $User = "vsphere.local\rob"
  44. # use -passthroughAuth or an encrypted password. You can encrypt your password with the provided PowerShell script RVToolsPasswordEncryption.ps1
  45. [string] $EncryptedPassword = "_RVToolsV3PWD01000000d08c9ddf0115d1118c7a00c04fc297eb01000000325cf1e07062a848a422825c7ccd19f100000000020000000000106600000001000020000000397128ff49bbd394092555bac4ea58b61232edf65d9c19f61f94516857e87e3c000000000e8000000002000020000000d068a8d3251e73170b8fd63e329aecb048885da168bc6a24c363e18f1a0a446c20000000efca9029a70b20b9d2d1042d3f34a1c370b965c085f2933a3fa453a0dd5392324000000084b7ad15d00299271c13ce7f44ad45fb6a6d8ded586f22a27"
  46. [string] $XlsxDir3 = "C:\RVTools"
  47. [string] $XlsxFile3 = "vCenter3.xlsx"
  48. # Start cli of RVTools
  49. Write-Host "Start export for vCenter $VCServer" -ForegroundColor DarkYellow
  50. $Arguments = "-u $User -p $EncryptedPassword -s $VCServer -c ExportAll2xlsx -d $XlsxDir3 -f $XlsxFile3"
  51. Write-Host $Arguments
  52. $Process = Start-Process -FilePath ".\RVTools.exe" -ArgumentList $Arguments -NoNewWindow -Wait -PassThru
  53. if($Process.ExitCode -eq -1)
  54. {
  55.     Write-Host "Error: Export failed! RVTools returned exitcode -1, probably a connection error! Script is stopped" -ForegroundColor Red
  56.     exit 1
  57. }
复制代码
下面内容表示将上面导出的多个 vCenter 的 Excel 文件合并成一个表格文件并输出到指定目录,这里就使用了 RVTools 安装目录中的 RVToolsMergeExcelFiles.exe 执行程序,如果环境中具有多个 vCenter 可以使用这个功能,如果没有或不想使用这个功能,那可以把这块内容删掉即可。
  1. # -----------------------------------------------
  2. # Merge xlsx files vCenter1 + vCenter2 + vCenter3
  3. # -----------------------------------------------
  4. $OutputFile = "C:\RVTools\vCenter123.xlsx"
  5. & .\RVToolsMergeExcelFiles.exe -input "$XlsxDir1\$XlsxFile1;$XlsxDir2\$XlsxFile2;$XlsxDir3\$XlsxFile3" -output $OutputFile -overwrite -verbose
复制代码
下面内容表示将上面合并输出的 Excel 文件通过邮件发送给管理员,这里就使用了 RVTools 安装目录中的 RVToolsSendmail.exe 执行程序,默认环境下在执行命令的末了一行被注释掉了,如果需要用到这个功能,可以设置相关信息并将末了一行的注释“#”删撤除,如果不用到这个功能可以不管它或者将这块内容删掉。
  1. # ---------------------
  2. # Mail output xlsx file
  3. # ---------------------
  4. [string] $SMTPserver = "your smtp server"
  5. [string] $SMTPport = "25"
  6. [string] $Mailto = "your email send to address"
  7. [string] $MailFrom = "Your email send from address"
  8. [string] $MailSubject = "`"RVTools export all for vCenter 1 and 2`""
  9. Write-Host "Send output file by mail" -ForegroundColor DarkYellow
  10. $Arguments = "/SMTPserver $SMTPserver /smtpport $SMTPport /mailto $Mailto /mailfrom $Mailfrom /mailsubject $Mailsubject /attachment  $OutputFile"
  11. Write-Host $Arguments
  12. #Start-Process -FilePath ".\RVToolsSendmail.exe" -ArgumentList $Arguments -NoNewWindow -Wait
复制代码
末了,返回到启动该脚本的目录。
  1. # Back to starting dir
  2. Set-Location $SaveCurrentDir
复制代码
颠末上面对 RVToolsBatchMultipleVCs.ps1 脚本内容的相识,联合自身环境中的环境,可以修改脚本中的内容调整为自己使用的脚本。比如,我当前环境中只想对一个 vCenter 执行导出使命,我调整的脚本如下。
  1. # =============================================================================================================# Script:    RVToolsBatchVC.ps1# Version:   1.0# Date:      June, 2024# By:        JUNIOR MU# =============================================================================================================# Save current directory
  2. $SaveCurrentDir = (get-location).Path
  3. # Set RVTools path
  4. [string] $RVToolsPath = "C:\Program Files (x86)\Dell\RVTools"
  5. # cd to RVTools directory
  6. 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
  7. Set-Location $SaveCurrentDir
复制代码
现在你可以使用这个脚本在 PowerShell 中执行,确定是否能正常导出。如果能正常导出,那可以进行后续步调。

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

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

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

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

确定使命,勾选下面的复选框,点击完成。

在“安全选项”设置中,勾选“不管用户是否登录都要运行”,设置符合的体系类型,点击确定并输入执行使命的用户暗码。

末了,等待使命执行,并查看结果。

参考:《RVTools Documentation》

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

宝塔山

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表