You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PowerShell获取Hyper-V虚拟机的IP地址?

解决Hyper-V虚拟机无法通过NetworkAdapters获取IP的问题

我之前也碰到过一模一样的问题!你用$vm.NetworkAdapters | Select-Object IPAddresses拿到空的{}结果,大概率是因为Hyper-V默认的IPAddresses属性依赖虚拟机里的**集成服务(Integration Services)**没正常工作,或者数据同步出了问题。给你几个靠谱的解决办法:

  • 先检查并修复集成服务
    Hyper-V要获取虚拟机的IP,必须依赖虚拟机内的合成网卡驱动和集成服务组件。你可以先检查状态:

    # 替换成你的虚拟机名称
    $vmName = "你的虚拟机名"
    Get-VMIntegrationService -VMName $vmName
    

    看输出里的Guest Service Interface和Heartbeat是不是Running状态。如果是Disabled或者Stopped,先启用并重启虚拟机:

    Enable-VMIntegrationService -VMName $vmName -Name "Guest Service Interface"
    Restart-VM -VMName $vmName
    
  • 直接从虚拟机内部获取IP(更可靠)
    如果集成服务一时半会儿搞不定,或者你需要更准确的结果,可以直接在虚拟机内执行命令拿IP。前提是主机和虚拟机能通信,且虚拟机开启了WinRM(Windows默认在域环境下会自动开启,工作组环境可能需要手动配置):

    $vmName = "你的虚拟机名"
    # 获取虚拟机内的IPv4地址(排除回环地址)
    Invoke-Command -VMName $vmName -ScriptBlock { 
        Get-NetIPAddress -AddressFamily IPv4 | 
        Where-Object { $_.InterfaceAlias -notmatch "Loopback" } |
        Select-Object IPAddress, InterfaceAlias
    }
    
  • 通过Hyper-V WMI类获取IP
    还有一种方式是直接调用Hyper-V的WMI管理接口,有时候比NetworkAdapters属性更稳定:

    $vmName = "你的虚拟机名"
    Get-WmiObject -Namespace root\virtualization\v2 -Class Msvm_GuestNetworkAdapterConfiguration |
    Where-Object { $_.ElementName -like "*$vmName*" } |
    Select-Object IPAddresses
    
  • 最后确认虚拟机的实际网络状态
    虽然你说网络正常,但还是建议手动登录虚拟机,用ipconfig(Windows)或ip a(Linux)确认系统确实获取到了IP。如果虚拟机本身没IP,那不管用什么Hyper-V命令都拿不到结果哦。

内容的提问来源于stack exchange,提问作者Quit3Simpl3

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:27:20