实测软件平台版本
VMware vSphere: 7.0u3/6.7u3混合
VMware ESXi: 7.0u3/6.7u3混合
Powershell:5.1.17763.2090
VMware Powercli:12.7.0-20091289
使用场景:多版本共存环境;管理混乱的环境;没有云管平台的环境;其他各种甲方坑爹的环境
批量连接到vCenter
创建密码表
使用excel创建csv文件,保存为vc_login.csv,格式如下图,注意首行标题,需要与登录脚本中调用的属性保持一致,注意保障密码文件安全性。
创建登录脚本
创建登录脚本文件login_to_all_vc.ps1,内容如下:
# 读取密码表
$vc_login_infos = Import-Csv .\vc_login.csv
# 循环密码表依次登录到每一个vc
foreach($vc_login_info in $vc_login_infos)
{
Connect-VIServer -server $vc_login_info.serverip -Protocol https -force -user $vc_login_info.username -password $vc_login_info.password
}
日常使用可以直接执行./login_to_all_vc.ps1之后,手动使用get-vm等基本查询命令了。使用完成后最好登出用户。
创建登出脚本
创建登出脚本文件logout_from_all_vc.ps1,内容如下:
# 登出所有已连接的vCenter
Disconnect-VIServer -Server * -Force
批量导出所有虚拟机信息
#调用登录脚本
./login_to_all_vc.ps1
#获取所有vm信息并导出到csv
$all_vm_infos = get-vm
$all_vm_infos | select name, VMHost, PersistentId, uid, numcpu, memoryGB, UsedSpaceGB, powerstate, @{N="IPAddress0";E={@($_.guest.IPAddress[0])}}, @{N="IPAddress1";E={@($_.guest.IPAddress[1])}}, @{N="IPAddress2";E={@($_.guest.IPAddress[2])}}, @{N="MainIp";E={@($_.CustomFields.Values[2])}}, Notes| Export-Csv -Encoding utf8 -path vminfo.csv
# 调用登出脚本
./logout_from_all_vc.ps1
导出csv成功之后,就可以方便的用excel处理结果了,直达宇宙的尽头
命令介绍
Connect-VIServer
选项 | 参数形式 | 说明 |
---|---|---|
Server | 字符串或列表 | 指定要连接的服务器,IP地址或列表 |
Force | 忽略证书 | |
User | 指定用户名 | |
Password | 指定密码 | |
Port | 整数 | 指定访问端口,80 或 443等 |
Protocol | 字符串 | 指定连接协议,http 或 https |
Session | 字符串 | 指定已存在的连接ID,重新连接 |
Disconnect-VIServer
选项 | 参数形式 | 说明 |
---|---|---|
Server | 字符串或列表 | 指定要断开连接的服务器,IP地址或列表,可以是通配符* |
Force | SwitchParameter | 关闭到服务器的所有连接,如果值为$false则只关闭最后一个连接 |
Get-Vm
选项 | 参数形式 | 说明 |
---|---|---|
Name | String[] | 指定要查询的虚拟机名称 |
Datastore | StorageResource[] | 指定要查询的Datastore范围,支持管道 |
Server | VIServer[] | 关指定要查询的VIServer范围 |
Tag | Tag[] | 指定要查询的虚拟机标签 |
Export-Csv
选项 | 参数形式 | 说明 |
---|---|---|
Append | SwitchParameter | 使用此参数可将 CSV 输出添加到指定文件的末尾。 如果没有此参数,请将文件内容替换为警告 |
Delimiter | char | 指定分隔符以分隔属性值。默认值为逗号,若要指定分号,请将它括在引号中 |
Encoding | char | 为导出的 CSV 文件指定编码。 默认值为 utf8NoBOM |
Force | SwitchParameter | 此参数允许覆盖只读文件 |
Path | String | 必需参数,指定保存 CSV 输出文件的位置 |