Недавно я создал скрипт, который смог создать выбранное количество виртуальных машин Hyper-V из «шаблона», экспортировав одну виртуальную машину и импортировав ее с разными идентификаторами и именами.Получить выход прогресса для Export-VM
Все работает плавно, но экспорт занимает довольно много времени. Есть ли способ получить прогресс от экспорта-vm? Если я посмотрю в гипер-v командный центр, я вижу, что моя виртуальная машина экспортируется после запуска скрипта, и у нее тоже есть значение прогресса, поэтому каким-то образом существует способ получить текущий прогресс ...
Было бы неплохо иметь выход прогресса для импорта-VM тоже, но это не очень важно.
Если вам интересно, вот мой текущий скрипт. Я знаю, что жестко закодированные пути и другие аспекты не очень приятны, поэтому, пожалуйста, не рассказывайте мне ничего о стиле кода или что-то в этом роде. Сначала идет рабочий скрипт, затем приходит хороший код.
param(
[int]$Anzahl = 0,
[string]$BasisVM = 'Schulung',
[string]$ExportDir = 'C:\VMConf\Export\',
[string]$ExportConf = 'Schulung\Virtual Machines\0D444AF2-3E63-4ACF-867E-34440AA99C42.xml',
[string]$VMDir = 'C:\VMs\',
[string]$VMNamePrefix = 'Schulung'
)
if ($Anzahl -eq 0) {
$Anzahl = Read-Host "Bitte Anzahl der benötigten VMs eingeben"
}
"`nStarte Export der Vorlage..."
if (-Not(Test-Path $ExportDir)) {
New-Item -ItemType directory -Path $ExportDir | out-null
}
Export-VM -Name $BasisVM -Path $ExportDir
"Abgeschlossen.`n"
if (Test-Path $VMDir) {
$err = $null
$i = 1
while (-not($err)) {
if ($i -gt 1) {
"Alte VM Nummer $($i - 1) wurde gelöscht."
}
Remove-VM -Name $($VMNamePrefix + ("{0:D2}" -f $i)) -Force -ErrorVariable err -ErrorAction SilentlyContinue
$i++
}
Remove-Item -r $VMDir | out-null
New-Item -ItemType directory -Path $VMDir | out-null
}
"`n$Anzahl VMs werden erstellt..."
for ($i=1; $i -le $Anzahl; $i++) {
"`tErstelle VM Nummer $i..."
$name = ($VMNamePrefix + ("{0:D2}" -f $i))
$path = ($VMDir + $name)
$VM = Import-VM -Path $($ExportDir + $ExportConf) -VhdDestinationPath $($path + "/Virtual Hard Discs") -VirtualMachinePath $path -Copy -GenerateNewId
Rename-VM -VM $VM -NewName $name
"`t$VM Nummer $i wurde erzeugt."
}
"Abgeschlossen.`n"
"Aufräumen..."
if (Test-Path $ExportDir) {
Remove-Item -r $ExportDir | out-null
}
"Abgeschlossen."
я в настоящее время используется для записи-прогресса вместо записи-вывода: 'Write-Progress-активности "VM вирда Exportiert" -status "Fortschritt:" -percentCompelte $ ExportJob.Progress.PercentComplete' –