在VMware vSphere环境中,管理员或运维人员经常需要快速获取虚拟机的IP地址以进行网络配置、故障排查或远程访问,PowerShell结合VMware PowerCLI工具,能够高效地从vCenter Server中检索虚拟机信息,包括IP地址,本文将详细介绍如何使用PowerShell脚本获取vCenter中所有虚拟机的IP地址,并提供实用步骤和示例。

准备工作
- 安装PowerCLI模块:若未安装,通过以下命令(Windows PowerShell)安装:
Install-Module -Name VMware.PowerCLI -Scope CurrentUser - 配置vCenter连接凭据:使用
Connect-VIServer命令测试连接,Connect-VIServer -Server "vcenter.example.com" -User "administrator@vsphere.local" -Password "YourPassword"
操作步骤
连接vCenter Server
使用Connect-VIServer命令连接到vCenter实例,这是后续操作的必要前提:
Connect-VIServer -Server "vcenter.example.com" -User "administrator@vsphere.local" -Password "YourPassword"
- 注意:确保服务器地址、用户名和密码正确,否则会报错。
获取vCenter中所有主机(Host)信息
通过Get-VMHost命令获取所有主机列表,为后续获取虚拟机做准备:
$vmhosts = Get-VMHost $vmhosts | Select-Object -Property Name, Uptime
- 此命令输出主机名称和运行时长,确认已获取正确主机列表。
遍历主机并获取虚拟机IP地址
使用循环遍历每个主机,然后获取其上的所有虚拟机,并提取IP地址(假设虚拟机已启用IP地址配置):

# 遍历每个主机
foreach ($host in $vmhosts) {
# 获取主机上的所有虚拟机
$vms = Get-VM -Location $host | Where-Object { $_.State -eq "PoweredOn" }
# 遍历虚拟机
foreach ($vm in $vms) {
# 获取虚拟机IP地址(假设使用标准网络适配器)
$ip = (Get-VMNetworkAdapter -VM $vm | Where-Object { $_.NetworkName -eq "VMNetwork" } | Select-Object -ExpandProperty IPAddress).Split('.')[0..3] -join '.'
# 输出结果
[PSCustomObject]@{
HostName = $host.Name
VMName = $vm.Name
IPAddress = $ip
}
}
}- 说明:上述脚本中,
Get-VMNetworkAdapter获取虚拟机的网络适配器信息,通过IPAddress属性提取IP地址。
示例输出(表格形式)
| 主机名称 | 虚拟机名称 | IP地址 |
|---|---|---|
| esxi-01 | WebServer1 | 168.1.10 |
| esxi-02 | Database1 | 168.1.11 |
| esxi-03 | AppServer1 | 168.1.12 |
高级用法:获取特定虚拟机的IP
若只需获取某台虚拟机的IP,可简化脚本:
# 连接vCenter
Connect-VIServer -Server "vcenter.example.com" -User "admin" -Password "password"
# 获取虚拟机对象
$vm = Get-VM -Name "WebServer1"
# 获取IP地址
$ip = (Get-VMNetworkAdapter -VM $vm | Where-Object { $_.NetworkName -eq "VMNetwork" } | Select-Object -ExpandProperty IPAddress).Split('.')[0..3] -join '.'
Write-Host "虚拟机 $($vm.Name) 的IP地址是:$ip"注意事项
- 确保虚拟机已启动并连接到网络,否则可能无法获取IP地址。
- 若网络适配器使用DHCP,IP地址可能动态变化,脚本仅获取当前配置的静态IP。
- 在大规模环境(如数百台虚拟机)中,建议添加筛选条件(如主机名称、虚拟机名称)以优化查询效率。
常见问题解答(FAQs)
如何处理“连接到vCenter服务器时出现错误?”
- 原因:可能是服务器地址错误、凭据不正确或网络问题。
- 解决方法:
- 检查vCenter服务器地址是否正确(如
vcenter.example.com)。 - 验证用户名和密码格式(如
administrator@vsphere.local),确保与vCenter配置一致。 - 确保网络可达,防火墙允许PowerCLI通信(默认端口为443)。
- 尝试使用
Connect-VIServer -Server vcenter.example.com -ErrorAction Stop,确保错误提示明确。
- 检查vCenter服务器地址是否正确(如
如何获取特定虚拟机的IP地址(而非全部虚拟机)?

- 解决方法:使用
Get-VM -Name "虚拟机名称"指定虚拟机,然后提取IP地址。Connect-VIServer -Server "vcenter.example.com" -User "admin" -Password "password" $vm = Get-VM -Name "WebServer1" $ip = (Get-VMNetworkAdapter -VM $vm | Where-Object { $_.NetworkName -eq "VMNetwork" } | Select-Object -ExpandProperty IPAddress).Split('.')[0..3] -join '.' Write-Host "虚拟机 WebServer1 的IP地址是:$ip"
- 解决方法:使用
通过以上步骤,可高效获取vCenter中虚拟机的IP地址,实现自动化管理和故障排查。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/207838.html


