Я реализую виртуальный аудит нескольких vcenters (около 5 из них), где отчет представляет собой просто csv каждой VM вместе с несколькими свойствами. Хотя этот скрипт запускался на ночь, я обнаружил, что для его завершения потребовалось около 5-6 часов, и он хотел повысить его эффективность. Я узнал о рабочих процессах и понял, что быстрее будет проводить аудит каждого vcenter одновременно, а не один за другим. Это было медленнее, чем я ожидал окончания примерно через 4 часа. Я заметил, что в данных было много дубликатов, и я не могу понять, почему это было бы; возможно, мои представления о том, как работает рабочий процесс, являются ошибочными. Я также ищу советы по повышению эффективности моего кода. Заранее спасибо.Duplicates in Workflow VM audit
Рабочий процесс:
workflow test {
param([string[]]$vcenters, [string]$session, [string]$username, [string]$password)
foreach -parallel($vcenter in $vcenters){
$main = InlineScript{
Add-PSSnapin VMware.VimAutomation.Core
Connect-VIServer -Server $Using:vcenter -User $Using:username -Password $Using:password
$vms = Get-View -ViewType VirtualMachine -Property Name, Summary.Config.GuestFullName, Runtime.Powerstate, Config.Hardware.MemoryMB, Config.Hardware.NumCPU
ForEach($machine in $vms){
$vm = Get-VM -Server $Using:vcenter -Name $machine.Name -ErrorAction SilentlyContinue
$object = New-Object -Type PSObject -Property ([ordered]@{
Name = $machine.Name
GuestOS = $machine.Summary.Config.GuestFullName
PowerState = $machine.Runtime.PowerState
MemoryGB = ($machine.Config.Hardware.MemoryMB/1024)
CPU = $machine.Config.Hardware.NumCPU
VLAN=(Get-NetworkAdapter -VM $vm |Sort-Object NetworkName |Select -Unique -Expand NetworkName) -join '; '
})
$object| Export-Csv -Append “C:\TestReports\$($vcenter)_TestReport.csv” -NoTypeInformation
}
Disconnect-VIServer - $Using:vcenter -Confirm:$false
}
}
}
Добавьте несколько журналов, чтобы узнать, что происходит. Существует множество способов сделать это, в том числе: Добавить-содержимое (журнал в файл), Write-Verbose (журналы в поток Verbose PowerShell) и т. Д. –