在包含许多主机的环境中,使用脚本管理主机比在 vSphere Client 中管理主机更快且不容易出错。

vSphere 包括用于主机管理的多种脚本编制语言。有关参考信息和编程提示,请参见 ESXCLI 文档vSphere API/SDK 文档;有关脚本式管理的其他提示,请参见 VMware 社区。vSphere 管理员文档重点介绍了如何使用 vSphere Client 进行管理。
VMware PowerCLI

VMware PowerCLI 是 vSphere API 的 Windows PowerShell 接口。VMware PowerCLI 包括用于管理 vSphere 组件的 PowerShell cmdlet。

VMware PowerCLI 包含上百个 cmdlet、一组示例脚本和用于管理和自动化的函数库。请参见https://developer.vmware.com/powercli

ESXCLI
ESXCLI 包含用于管理 ESXi 主机和虚拟机的一组命令。请参见 ESXCLI 文档

还可以使用 vSphere Automation SDK 的一个脚本接口,如 vSphere Automation SDK for Python。

过程

  1. 创建具有有限特权的自定义角色。
    例如,考虑创建一个角色,该角色具有一组管理主机的特权但没有管理虚拟机、存储或网络的特权。如果只要使用脚本提取信息,则可为主机创建具有只读特权的角色。
  2. vSphere Client 中,创建服务帐户并为其分配自定义角色。
    如果要严格限制对特定主机的访问权限,则可以创建具有不同访问权限级别的多个自定义角色。
  3. 编写脚本以执行参数检查或修改,然后运行脚本。
    例如,您可以检查或设置主机的 shell 交互式超时,如下所示:
    语言 命令
    ESXCLI
    esxcli <conn_options> system settings advanced get /UserVars/ESXiShellTimeOut
    esxcli --formatter=csv --format-param=fields="Path,Int Value" 
    system settings advanced list | grep /UserVars/ESXiShellTimeOut
    PowerCLI
    #List UserVars.ESXiShellInteractiveTimeOut for each host
    Get-VMHost | Select Name,
     @{N="UserVars.ESXiShellInteractiveTimeOut";E={$_ 
    | Get-AdvancedSetting -Name UserVars.ESXiShellInteractiveTimeOut
    | Select -ExpandProperty Value}}
    
    # Set UserVars.ESXiShellTimeOut to 900 on all hosts
    Get-VMHost 
    | Foreach { Get-AdvancedSetting -Entity $_ -Name UserVars.ESXiShellInteractiveTimeOut | Set-AdvancedSetting -Value 900 }
    
  4. 在大型环境中,创建具有不同访问特权的角色并根据要执行的任务将主机分组到文件夹。然后从不同服务帐户对不同文件夹运行脚本。
  5. 运行命令后,确认更改已生效。