몇 가지 vcenters (약 5 개)의 VM 감사를 구현합니다. 보고서는 몇 가지 속성과 함께 각 VM의 csv입니다. 이 스크립트는 하룻밤 사이에 실행 되겠지만, 완료하는 데 약 5-6 시간이 걸렸으며 효율성을 높이고 싶었습니다. 나는 워크 플로우에 대해 배웠고 하나 하나가 아니라 각각의 vcenter를 동시에 감사하는 것이 더 빠를 것이라고 생각했습니다. 그것은 약 4 시간 후에 내가 끝내기를 기대했던 것보다 느렸다. 데이터에 중복 된 부분이 많아서 그 이유를 알 수 없습니다. 어쩌면 워크 플로우 작동 방식에 대한 제 생각에는 결함이 있습니다. 나는 또한 내 코드에서 효율성을 높이는 데 대한 조언을 찾고있다. 미리 감사드립니다.Workflow VM 감사에서 중복 됨
워크 플로 : 아래의 변경으로
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
}
}
}
어떤 일이 벌어지고 있는지 보려면 몇 가지 기록을 추가하십시오. Add-Content (파일에 기록), Write-Verbose (Verbose PowerShell 스트림에 기록) 등을 포함 해 여러 가지 방법으로이를 수행 할 수 있습니다. –