重命名Hyper-V虚拟机以包含其SN。

问题描述 投票:0回答:1

我正在尝试批量重命名一些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
powershell scripting
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.