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

关于此任务

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

vSphere PowerCLI

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

vSphere PowerCLI 包含超过 200 个 cmdlet、一组示例脚本和用于管理和自动化的函数库。请参见《vSphere PowerCLI 文档》

vSphere Command-Line Interface (vCLI)

vCLI 包含用于管理 ESXi 主机和虚拟机的一组命令。此安装程序还会安装 vSphere SDK for Perl,它会运行 Windows 或 Linux 系统,并将安装 ESXCLI 命令、vicfg- 命令以及一组其他 vCLI 命令。请参见《vSphere Command-Line Interface 文档》

从 vSphere 6.0 开始,还可以对 vCloud Suite SDK(如 vCloud Suite SDK for Python)使用其中一个脚本界面。

过程

  1. 创建具有有限特权的自定义角色。

    例如,考虑创建一个角色,该角色具有一组管理主机的特权但没有管理虚拟机、存储或网络的特权。如果只要使用脚本提取信息,则可为主机创建具有只读特权的角色。

  2. vSphere Web Client 中,创建服务帐户并为其分配自定义角色。

    如果要严格限制对特定主机的访问权限,则可以创建具有不同访问权限级别的多个自定义角色。

  3. 编写脚本以执行参数检查或修改,然后运行脚本。

    例如,您可以检查或设置主机的 shell 交互式超时,如下所示:

    语言

    命令

    vCLI (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. 运行命令后,确认更改已生效。