我正在尝试批量重命名一些Hyper-V虚拟机,以包括其BIOS序列号的前4位。我通过提取虚拟机名称和相关的SN,然后尝试使用这些信息重命名虚拟机,并使用提取表中相关的SN命名每个虚拟机。
它能很好地拉出必要的信息,也就是说虚拟机的名称(elementname)和SN的名称(BIOSSerialNumber),但是重命名过程却被破坏了。
目前,它的工作原理是将每个虚拟机重命名为包含相同的序列号(列表中的第一个),而不是使用与正确的虚拟机相关联的序列号。
我希望得到任何帮助来解决这个问题。
到目前为止,我已经有了这段代码。https:/pastebin.comXyDcAqvx
$VMPrefix = "xtest"
$VMs = Get-WmiObject -Namespace root\virtualization\v2 -class Msvm_VirtualSystemSettingData | `
Where-Object {$_.elementname -like "*$VMPrefix*"} | `
select elementname, BIOSSerialNumber
foreach ($VM in $VMs) {
Rename-VM $VM.elementname -NewName ($VMPrefix + $VM.BiosSerialNumber.substring(0,4))
}
选择elementname和SN的结果是。
elementname BIOSSerialNumber
----------- ----------------
xtest7749 7749-2038-3241-8243-8506-8264-01
xtest7749 7296-0806-3378-0069-7005-3271-32
xtest7749 1690-8323-7476-5112-2317-7980-11
结果应该是这样的:
elementname BIOSSerialNumber
----------- ----------------
xtest7749 7749-2038-3241-8243-8506-8264-01
xtest7296 7296-0806-3378-0069-7005-3271-32
xtest1690 1690-8323-7476-5112-2317-7980-11