我在 Windows Server 2012 上安装了 Hyper-V,在 Hyper-v 中安装了 CentOS 6/7 vm。我执行以下命令:
Get-vm -name "x" | select -ExpandProperty NetworkAdapters
输出:
Name IsManagementOs VMName SwitchName MacAddress Status IPAddresses
---- -------------- ------ ---------- ---------- ------ -----------
Network Adapter False "x" InternalSwitch Mac {Degraded, protocolversion} {}
为什么是IPAddresses
空的?
我尝试过(command).ipaddresses
并得到了相同的结果。
答案1
我必须将 Linux 集成服务安装到虚拟机中(Linux 集成服务 4.1):
- 从以下位置下载软件包适用于 Hyper-V 的 Linux 集成服务版本 4.1到客户服务器 (Linux) 并解压。如果您无法将软件包传输到客户主机,也可以使用 Hyper-V 管理器安装 ISO 映像。
- 在解压后的目录下找到您的发行版(例如
CentOS72
)。 - 以 root 身份运行
install.sh
。 - 重新启动客户操作系统。
对于 CentOS 7,还需要禁用 NetworkManager。这一点(以及其他提示)在Hyper-V 上支持的 CentOS 和 Red Hat Enterprise Linux 虚拟机(NetworkManager 注释 2)
运行:systemctl disable NetworkManager
并重新启动
现在 Hyper-V 管理器应该会显示虚拟机的 IP 地址和Get-VM
也应该可以工作。
答案2
你并不孤单,我也遇到了这个问题。确保你以管理员身份运行 PowerShell,否则您将无法获得任何 IP 地址。即使以管理员身份运行,我仍然只能为主机上 30 个虚拟机中的一个获取 IP 地址。
答案3
我无法使用 PowerShell 工具解决此问题,但有一个解决方法:
您可以使用 获取虚拟机的 MAC 地址Get-VMNetworkAdapter
。从 Hyper-V 主机,ping 您知道虚拟机可以获得的 IP 地址范围(我想是从 DHCP 获取),然后测试 ARP 表中的 MAC 地址。