针对每个VM的VMware性能指标均归入一个CSV文件中

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

我正在尝试创建一个包含多个VM的VmWare性能指标的.csv文件。

我发现的googlefoo示例通常会将每个性能计数器分成单独的.csv文件,这是不可取的。我希望每个VM都有一个.csv,其中包含所有可用的性能计数器。

[如果您能帮助我确定如何完成此任务,我将不胜感激。这是我现在拥有的:

Set-PowerCLIConfiguration -InvalidCertificateAction Ignore
Connect-ViServer my-vcenter

$vms = Get-Content list-of-vms.txt
$start = (Get-Date).AddDays(-7)

$vms | ForEach-Object {
    $metrics = (Get-VM $_ | Get-StatType)
    $output = @() #this is where i collect all the counters per line
    $hashtable = Get-Stat -Entity $_ -Stat $metrics -Start $start | Group-Object -Property TimeStamp

    For ($i=0; $i -lt $hashtable.Count; $i++) { # iterate through each timestamp
        $output = New-Object -TypeName psobject -Property @{TimeStamp = $hashtable[$i].Name}
        For ($j=0; $j -lt $hashtable[$i].Group.Count; $j++) { # iterate through each counter in above timestamp
            $output| Add-Member -Name $hashtable[$i].Group[$j].MetricId -Type NoteProperty -Value $hashtable[$i].Group[$j].Value
        }
        $output | Export-Csv "$($_)_results.csv" -Append        
    }
}

这里的思考过程是这样:

对于每个虚拟机,生成一个带有所有可用计数器的哈希表,并按时间戳分组。然后,对于每个时间戳,提取每个计数器的名称,值类型,并将其作为LINE添加到$ output变量中。完成所有递归迭代后,使用结果创建一个.csv文件。.csv文件的内容作为示例:

somevm_results.csv

TimeStamp, cpu.usage.average, mem.usage.average, etc

5/20/2020,50%,50%, etc
powershell csv powercli
1个回答
0
投票

我设法得到我想要的。以下是对我有用的代码。如果您有关于如何减少代码混乱的建议,我将不胜感激。

© www.soinside.com 2019 - 2024. All rights reserved.