Tho*_*sen 4 hyper-v windows-10
我在 Windows 10 主机上的 Hyper-V 中安装了 Ubuntu 18.04,并在某些端口上公开了功能,这些端口可供主机上运行的其他程序访问时使用http://vm-ip-number:port
(即http://192.168.0.1:12345
)。效果很好。
我想使用虚拟机的名称而不是 IP 号来连接到它(出于所有常见原因,因为这将出现在配置文件中)。对于完整的 Linux 或 MacOS 服务器,我会让主机使用 Zeroconf 来声明自己,但一些搜索表明,这对于跨虚拟机边界的 Windows 10 来说效果不佳。
另一种方法可能是让 Hyper-V 为虚拟机分配一个由我提供的名称,该名称在虚拟机启动时可用,但我对 Hyper-V 不够熟悉,不知道这是否可行。为此在来宾中安装附加工具是可以接受的,仅在必要时才在主机中安装。
我想要的只是能够http://my-own-name
在运行时访问虚拟机,而无需在任何地方对 IP 号进行硬编码。
建议?
以下 PowerShell 脚本将生成一个hosts
文件,其中包含所有正在运行的 VM 的 IP 地址和 VM 名称:
get-vm | Get-VMNetworkAdapter | ? IPAddresses -ne $null | % {Write-Output "$($_.ipaddresses[0]) $($_.VMName)"} | Set-Content -Path ".\hosts"
Run Code Online (Sandbox Code Playgroud)
需要注意的几点:
该脚本需要以管理员身份运行。
Set -Content
命令需要更好的 Path 参数,因为目前它将覆盖hosts
当前文件夹中的文件。
如果您不想hosts
覆盖文件而是追加文件,请改用
Add-Content
命令。这样您就可以从初始hosts
文件开始并附加到它。
Write
-Output
命令输出字段中的第一个条目ipaddresses
。如果同时启用 IPv4 和 IPv6,该列表将包含两个条目,其中第一个条目通常是 IPv4 的条目。
hosts
通过此脚本为我正在运行的虚拟机生成的示例文件:
172.17.223.121 Windows10Test
Run Code Online (Sandbox Code Playgroud)
(最好避免虚拟机名称中出现空格,否则脚本上需要做更多工作。)
归档时间: |
|
查看次数: |
3134 次 |
最近记录: |