使用 Power Shell 修改 Hyper-V 虚拟机 UUID 的解决方案

这篇具有很好参考价值的文章主要介绍了使用 Power Shell 修改 Hyper-V 虚拟机 UUID 的解决方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

在研究了一下午 k8s 文档的时候,正准备开干,万万没想到一个 uuid 的问题卡了我几个小时,一直想在系统中解决,没想到最后在外部使用PowerSheel解决了,分享记录一二

问题描述与尝试解决

  • 根据官方文档 使用 kubeadm 创建 k8s 集群的准备,所以准备在之前文章中使用 Hyper-V 安装的 CentOS8.5 的虚拟机搭建

需要确保每个节点上 MAC 地址和 product_uuid 的唯一性
可以使用命令 ip linkifconfig -a 来获取网络接口的 MAC 地址
可以使用 sudo cat /sys/class/dmi/id/product_uuid命令对 product_uuid 校验

  • 检查 mac 地址,因为之前就修改过IP,在Hyper-V管理器中就可以看到是不一样
    使用 Power Shell 修改 Hyper-V 虚拟机 UUID 的解决方案
  • 接着检查 product_uuid,使用了之前安装的jumpserver批量执行了下,好家伙,都一样
    使用 Power Shell 修改 Hyper-V 虚拟机 UUID 的解决方案
  • 于是问了 ChatGPT 后开始修改
    使用 Power Shell 修改 Hyper-V 虚拟机 UUID 的解决方案
  • 然后,好家伙,无权限
    使用 Power Shell 修改 Hyper-V 虚拟机 UUID 的解决方案
  • 然后,就结合 GPT 和搜索找寻答案,尝试了 禁用 SELinux,修改文件权限,修改 GRUB 配置,未果
  • 终于,皇天不负有心人,在我不停迭代搜索词后,还是让我找到了一篇看得懂行得通的博客 PowerShell修改Hyper-V虚拟机的UUID
  • 尝试了文章引用的国外大佬的工具,发现已经无法运行,好在博主提供了一个可以直接使用的脚本
  • 下面结合个人实践来做一些补充说明

使用 PowerShell 查询虚拟机UUID

  • 系统:win10
  • HyperV版本:10.0.19041
  • 虚拟机名称:devops01
  • 通过查询验证可行性,修改名称为自己的虚拟机名,使用 PowerSheel(管理员) 执行命令即可查询到
Get-VM "devops04" | % { (gwmi -Namespace root\virtualization\v2 -Class msvm_computersystem -Filter ('ElementName="{0}"' -f $_.Name)).GetRelated('msvm_virtualsystemsettingdata') | select BIOSGUID }

使用 Power Shell 修改 Hyper-V 虚拟机 UUID 的解决方案

  • 检查点会影响查询结果,所以优化了一下,可以使用这个来查询
(Get-WmiObject -Namespace root\virtualization\v2 -Class Msvm_VirtualSystemSettingData -Filter "ElementName='devops04'").BIOSGUID

关闭虚拟机!

重要,尝试了两次,确认需要在虚拟机关闭的时候执行才有用

执行命令

  • 修改虚拟机名称变量:devops04 为你的虚拟机名称
  • 然后直接粘贴下面命令到 PowerShell 终端执行即可
  • 也可以存为.ps1 文件执行
#这里假设虚拟机的VMname是devops01,自行替换即可
$VMname="devops04"
$vmx = Get-WmiObject -Namespace root\virtualization\v2 -Class msvm_virtualsystemsettingdata 
#每次操作选择一台虚拟机
$CurrentSettingsData = $vmx | Where-Object { $_.ElementName -eq $VMname }
#检查一下老的GUID
$CurrentSettingsData.BIOSGUID
#生成新GUID
$GUID = [System.Guid]::NewGuid()
#重新写入GUID,注意要带{},这是非常重要的细节
$CurrentSettingsData.BIOSGUID = "{" + $GUID.Guid.ToUpper() + "}" 
#生成一个ModifySystemSettings的空对象
$VMMS = Get-WmiObject -Namespace root\virtualization\v2 -Class msvm_virtualsystemmanagementservice
$ModifySystemSettingsParams = $VMMS.GetMethodParameters('ModifySystemSettings')
#配置这个属性,需要特殊的转换方式
$ModifySystemSettingsParams.SystemSettings = $CurrentSettingsData.GetText([System.Management.TextFormat]::CimDtd20)
#写入
$VMMS.InvokeMethod('ModifySystemSettings', $ModifySystemSettingsParams, $null)
  • 执行成功,再次查询uuid也已经更新
    使用 Power Shell 修改 Hyper-V 虚拟机 UUID 的解决方案
  • 开机启动使用命令查询Linux发现已经变更,因为UUID的表示形式是不区分大小写的,因此大小写字母的顺序不会影响其唯一性。所以看到一个大写,一个小写其实没关系
    使用 Power Shell 修改 Hyper-V 虚拟机 UUID 的解决方案
    将所有虚拟机执行完一遍后,检查可以看到已经成功修改
    使用 Power Shell 修改 Hyper-V 虚拟机 UUID 的解决方案

结语

习惯了 ChatGPT 的便捷,发现 Google 的次数都变少了,关键词一开始没有找准走了一点弯路,找资料的过程发现挺多人遇到这个问题,遂再次记录。文章来源地址https://www.toymoban.com/news/detail-760237.html

参考文档

  • PowerShell Script: Change the BIOS GUID of a Hyper-V Virtual Machine
  • PowerShell修改Hyper-V虚拟机的UUID

到了这里,关于使用 Power Shell 修改 Hyper-V 虚拟机 UUID 的解决方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Hyper-V 虚拟化技术】

    Hyer-V是微软提出的一种系统管理程序虚拟化技术。主要作用 就是 管理 、调度虚拟机的创建和运行。并提供硬件资源的虚拟化。Hyper-V 可部署在win 8.x 64位 pro以上版本中,和Windows2008以上服务器的版本中。是微软第一个采用类似Vmware和Citrix开源Xen一样的基于hypervisor的技术。这也

    2024年02月01日
    浏览(61)
  • windows11家庭版没有hyper-v解决方案

    1:创建一个文本文档,并重命名为Hyper-V.cmd,如图: 2:然后用记事本打开后编辑以下代码: 3:保存文档后,右击文档选择用管理员身份执行文件。会出现命令窗户,等待安装完毕后输入Y重启电脑。Hyper-V安装成功

    2024年02月11日
    浏览(54)
  • Hyper-V如何设置网络-虚拟交换机设置

    发现win10还有个虚拟机Hyper-V的功能,不太占资源,不用另外装VMare了,所以立即使用上。但设置网络的时候,不像WMare那样直接管理虚拟网卡,只有个虚拟交换机可用,所以各种查证、试验,现在终于搞清楚了。 首先,虚拟机管理器服务开启后,宿主机本身的网卡已经被虚拟

    2024年01月18日
    浏览(50)
  • Hyper-V中的虚拟机双网卡配置

    在虚拟机交换管中 存在三种虚拟交换机分别是外部、内部和专用 内部网络:虚拟机与虚拟机访问宿主机,虚拟机可以访问物理网络 外部网络:虚拟机与虚拟机之间,虚拟机与宿主机之间,虚拟机或宿主机与虚拟机之间相互通信 专用网络:虚拟机专用网络,虚拟机与虚拟机之

    2024年02月08日
    浏览(55)
  • Win11系统怎么关闭hyper-v虚拟机?

    hyper-v是一款受大家欢迎的虚拟化产品,允许用户使用内置的系统工具创建虚拟机等,但是有一些win11用户在使用之后又不想用了,想要将其关闭但是不知道具体的操作。其实关闭虚拟机的方法有很多,下面就来一起看看。 方法一:通过CMD禁用 1、按 Windows + S 键打开 搜索栏,

    2024年02月02日
    浏览(44)
  • Windows开启 CPU 虚拟化 + 关闭 Hyper-V

      在进行虚拟机操作时,启用 CPU 虚拟化可以提高虚拟机的性能和应用程序的稳定性。但是,在 Windows 操作系统下,Hyper-V是默认启用的,如果想要开启 CPU 虚拟化,需要先关闭 Hyper-V,hyper-v是Windows系统中自带的虚拟机,开启后会占用硬盘空间和内存。本文将介绍如何在 Wi

    2024年02月02日
    浏览(48)
  • Hyper-V虚拟机中Ubuntu安装增强会话工具

    如果使用 Hyper-V,您可能已经注意到,通过使用增强会话模式而不是 VM Connect 的基本会话模式,因为 RDP服务未在 Linux 中预先配置,这篇博文将告诉你如何在Linux虚拟机上安装增强会话工具,并连接。 下载安装脚本 这个仓库有不同版本的安装脚本,请选择对应脚本。 给脚本添

    2024年02月11日
    浏览(44)
  • 如何开启并配置win10自带虚拟机Hyper-V

    若需从头开始配置win10自带虚拟机Hyper-V,建议直接照这篇文章来Hyper-V的使用与创建Linux虚拟机,不用走弯路。 若已经在安装中途且报错了,可以往后看看。 ----------------以下为我的安装报错及解决记录过程,前面配置顺序应该是有点问题的,但是再改觉得麻烦,就放这了。

    2024年02月06日
    浏览(61)
  • Hyper-V 下的XP虚拟机通过主机访问网络的设置步骤

            Hyper-V是Windows系统下比较好用的交换机软件,但在使用的时候也避免不了出现一些问题。虚拟机通过主机访问网络是个常见的需求。下面是我在Windows 11下总结的虚拟机通过主机访问网络的设置步骤及出现0x8000ffff错误的处理方法。         下面的描述是建立在已经正

    2024年02月15日
    浏览(50)
  • 【服务器数据恢复】Hyper-V虚拟化数据恢复案例

    服务器数据恢复环境: Windows Server操作系统服务器,部署Hyper-V虚拟化环境,虚拟机的硬盘文件和配置文件存放在某品牌MD3200存储中,MD3200存储中有一组由4块硬盘组成的raid5阵列,存放虚拟机的数据文件;另外还有一块硬盘存放虚拟机数据文件的备份。 服务器故障检测: 由于

    2024年01月21日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包