Я пытаюсь переименовать некоторые виртуальные машины Hyper-V, чтобы включить первые 4 цифры их серийного номера B IOS. Я делаю это, вытягивая имена виртуальных машин и связанные с ними S / N, а затем пытаюсь переименовать виртуальные машины, используя эту информацию, называя каждую виртуальную машину, используя соответствующий S / N в извлеченной таблице.
Она вытягивает необходимые info отлично, то есть имя виртуальной машины (имя элемента) и S / N (BIOSSerialNumber), однако процесс переименования не работает.
В настоящее время он работает, переименовывая каждую виртуальную машину, чтобы включить в нее один и тот же серийный номер (первый в списке), вместо того, чтобы использовать серийный номер, связанный с правильной виртуальной машиной.
Буду признателен за любую помощь в решении этой проблемы.
У меня есть этот код до сих пор: https://pastebin.com/XyDcAqvx
$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))
}
Выбор имени элемента и S / N приводит к:
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