build 6ddc7a35 | content blog-content@417154f · 338 posts | profiles 32 · corpus 315 | ● 0 skipped | format run

$ soultec get post/powercli-getting-the-usage-of-a-cluster -o yaml$ soultec get post/powercli-getting-the-usage-of-a-cluster -o json$ soultec get post/powercli-getting-the-usage-of-a-cluster -o toml$ soultec get post/powercli-getting-the-usage-of-a-cluster -o xml$ python3 powercli-getting-the-usage-of-a-cluster.pyPS> ./powercli-getting-the-usage-of-a-cluster.ps1$ go run powercli-getting-the-usage-of-a-cluster.go$ node powercli-getting-the-usage-of-a-cluster.js

apiVersion: soultec.ch/v1kind: Postmetadata: name: powercli-getting-the-usage-of-a-cluster locale: de labels: author: dario-doerflinger series: scripting capability/automation: 1.81 vendor/vmware: 0.98 annotations: source: blog-content/posts/de/powercli-getting-the-usage-of-a-cluster.md route: /de/insights/powercli-getting-the-usage-of-a-cluster/ schema: /nerd/schema/posts.json markdown: /de/insights/powercli-getting-the-usage-of-a-cluster.mdspec: title: Auslastung eines Clusters ermitteln date: 2018-06-04 author: dario-doerflinger locale: de summary: >- Unsere Kunden holen uns manchmal, um ihre Umgebung durchzusehen. Weil das oft vorkommt, haben wir eine Checkliste, was wir zu Beginn prüfen. capabilities: [automation] vendors: [vmware] series: scripting migrated: 2026-08-24 translationReviewed: false draft: false sections: - body: | Unsere Kunden holen uns manchmal, um ihre Umgebung durchzusehen. Weil das ziemlich oft vorkommt, haben wir eine Checkliste mit den Prüfungen, die wir zu Beginn machen. Eine davon ist eine Beurteilung der Cluster-Auslastung. Die hilft uns später, wenn wir den Kunden beraten, wie er seine Infrastruktur robuster macht. Mir ist klar, dass das folgende Script eine Momentaufnahme der Auslastung liefert und weder Historie berücksichtigt noch die Statistiken des vCenters zu einem Cluster abfragt. Das ist in Ordnung, denn oft genug liefert das vCenter ohnehin keine verlässlichen Werte. Was dem Script noch fehlt, ist eine Gewichtung der Host-Ressourcen. Es geht davon aus, dass alle Hosts eines Clusters gleich viel CPU und RAM haben. Wenn das nicht stimmt, ist der Prozentwert am Ende nicht besonders genau. **Danke an [LucD](http://www.lucd.info/), der mich darauf gebracht hat.** Unsere Diskussion dazu steht in den VMware Communities [hier](https://communities.vmware.com/thread/568844). Update: Dieses Script liegt inzwischen auf [GitHub](https://github.com/virtualFrog/PowerCLI-Scripts). Sobald ich dazu komme, überlege ich mir, wie sich das im Script lösen lässt. Bis dahin hier die Fassung mit den genannten Einschränkungen: ```powershell $clusters = get-cluster $myClusters = @() foreach ($cluster in $clusters) { $hosts = $cluster |get-vmhost [double]$cpuAverage = 0 [double]$memAverage = 0 Write-Host $cluster foreach ($esx in $hosts) { Write-Host $esx [double]$esxiCPUavg = [double]($esx | Select-Object @{N = 'cpuAvg'; E = {[double]([math]::Round(($_.CpuUsageMhz) / ($_.CpuTotalMhz) * 100, 2))}} |Select-Object -ExpandProperty cpuAvg) $cpuAverage = $cpuAverage + $esxiCPUavg [double]$esxiMEMavg = [double]($esx | Select-Object @{N = 'memAvg'; E = {[double]([math]::Round(($_.MemoryUsageMB) / ($_.MemoryTotalMB) * 100, 2))}} |select-object -ExpandProperty memAvg) $memAverage = $memAverage + $esxiMEMavg } $cpuAverage = [math]::Round(($cpuAverage / ($hosts.count) ), 1) $memAverage = [math]::Round(($memAverage / ($hosts.count) ), 1) $ClusterInfo = "" | Select-Object Name, CPUAvg, MEMAvg $ClusterInfo.Name = $cluster.Name $ClusterInfo.CPUAvg = $cpuAverage $ClusterInfo.MEMAvg = $memAverage $myClusters += $ClusterInfo } $myClusters ``` Und so sieht die Ausgabe aus: ![image003](/blog-assets/powercli-getting-the-usage-of-a-cluster/01.webp)status: corpus: 315 alsoLike: - {ref: posts/vmware-explore-las-vegas-hackathon-2025, score: 1.00} - {ref: posts/vmware-hackathon-2024-project, score: 1.00} - {ref: solutions/vmware/vmware-cloud-foundation/addon/business-operations, score: 0.60} search: /de/search.json
{ "apiVersion": "soultec.ch/v1", "kind": "Post", "metadata": { "name": "powercli-getting-the-usage-of-a-cluster", "locale": "de", "labels": { "author": "dario-doerflinger", "series": "scripting", "capability/automation": 1.81, "vendor/vmware": 0.98 }, "annotations": { "source": "blog-content/posts/de/powercli-getting-the-usage-of-a-cluster.md", "route": "/de/insights/powercli-getting-the-usage-of-a-cluster/", "schema": "/nerd/schema/posts.json", "markdown": "/de/insights/powercli-getting-the-usage-of-a-cluster.md" } }, "spec": { "title": "Auslastung eines Clusters ermitteln", "date": "2018-06-04", "author": "dario-doerflinger", "locale": "de", "summary": "Unsere Kunden holen uns manchmal, um ihre Umgebung durchzusehen. Weil das oft vorkommt, haben wir eine Checkliste, was wir zu Beginn prüfen.", "capabilities": [ "automation" ], "vendors": [ "vmware" ], "series": "scripting", "migrated": "2026-08-24", "translationReviewed": false, "draft": false, "sections": [ { "body": "Unsere Kunden holen uns manchmal, um ihre Umgebung durchzusehen. Weil das ziemlich oft vorkommt, haben wir eine Checkliste mit den Prüfungen, die wir zu Beginn machen. Eine davon ist eine Beurteilung der Cluster-Auslastung. Die hilft uns später, wenn wir den Kunden beraten, wie er seine Infrastruktur robuster macht.\n\nMir ist klar, dass das folgende Script eine Momentaufnahme der Auslastung liefert und weder Historie berücksichtigt noch die Statistiken des vCenters zu einem Cluster abfragt. Das ist in Ordnung, denn oft genug liefert das vCenter ohnehin keine verlässlichen Werte.\n\nWas dem Script noch fehlt, ist eine Gewichtung der Host-Ressourcen. Es geht davon aus, dass alle Hosts eines Clusters gleich viel CPU und RAM haben. Wenn das nicht stimmt, ist der Prozentwert am Ende nicht besonders genau. **Danke an [LucD](http://www.lucd.info/), der mich darauf gebracht hat.** Unsere Diskussion dazu steht in den VMware Communities [hier](https://communities.vmware.com/thread/568844).\n\nUpdate: Dieses Script liegt inzwischen auf [GitHub](https://github.com/virtualFrog/PowerCLI-Scripts). \nSobald ich dazu komme, überlege ich mir, wie sich das im Script lösen lässt. Bis dahin hier die Fassung mit den genannten Einschränkungen:\n\n```powershell\n$clusters = get-cluster\n$myClusters = @()\nforeach ($cluster in $clusters) {\n $hosts = $cluster |get-vmhost\n\n [double]$cpuAverage = 0\n [double]$memAverage = 0\n\n Write-Host $cluster\n foreach ($esx in $hosts) {\n Write-Host $esx\n [double]$esxiCPUavg = [double]($esx | Select-Object @{N = 'cpuAvg'; E = {[double]([math]::Round(($_.CpuUsageMhz) / ($_.CpuTotalMhz) * 100, 2))}} |Select-Object -ExpandProperty cpuAvg)\n $cpuAverage = $cpuAverage + $esxiCPUavg\n\n [double]$esxiMEMavg = [double]($esx | Select-Object @{N = 'memAvg'; E = {[double]([math]::Round(($_.MemoryUsageMB) / ($_.MemoryTotalMB) * 100, 2))}} |select-object -ExpandProperty memAvg)\n $memAverage = $memAverage + $esxiMEMavg\n }\n $cpuAverage = [math]::Round(($cpuAverage / ($hosts.count) ), 1)\n $memAverage = [math]::Round(($memAverage / ($hosts.count) ), 1)\n $ClusterInfo = \"\" | Select-Object Name, CPUAvg, MEMAvg\n $ClusterInfo.Name = $cluster.Name\n $ClusterInfo.CPUAvg = $cpuAverage\n $ClusterInfo.MEMAvg = $memAverage\n $myClusters += $ClusterInfo\n}\n$myClusters\n```\n\nUnd so sieht die Ausgabe aus:\n\n![image003](/blog-assets/powercli-getting-the-usage-of-a-cluster/01.webp)" } ] }, "status": { "corpus": 315, "alsoLike": [ { "ref": "posts/vmware-explore-las-vegas-hackathon-2025", "score": "1.00" }, { "ref": "posts/vmware-hackathon-2024-project", "score": "1.00" }, { "ref": "solutions/vmware/vmware-cloud-foundation/addon/business-operations", "score": "0.60" } ], "search": "/de/search.json" }}
apiVersion = "soultec.ch/v1"kind = "Post"[metadata]name = "powercli-getting-the-usage-of-a-cluster"locale = "de"[metadata.labels]author = "dario-doerflinger"series = "scripting""capability/automation" = 1.81"vendor/vmware" = 0.98[metadata.annotations]source = "blog-content/posts/de/powercli-getting-the-usage-of-a-cluster.md"route = "/de/insights/powercli-getting-the-usage-of-a-cluster/"schema = "/nerd/schema/posts.json"markdown = "/de/insights/powercli-getting-the-usage-of-a-cluster.md"[spec]title = "Auslastung eines Clusters ermitteln"date = 2018-06-04author = "dario-doerflinger"locale = "de"summary = "Unsere Kunden holen uns manchmal, um ihre Umgebung durchzusehen. Weil das oft vorkommt, haben wir eine Checkliste, was wir zu Beginn prüfen."capabilities = ["automation"]vendors = ["vmware"]series = "scripting"migrated = 2026-08-24translationReviewed = falsedraft = false[[spec.sections]]body = '''Unsere Kunden holen uns manchmal, um ihre Umgebung durchzusehen. Weil das ziemlich oft vorkommt, haben wir eine Checkliste mit den Prüfungen, die wir zu Beginn machen. Eine davon ist eine Beurteilung der Cluster-Auslastung. Die hilft uns später, wenn wir den Kunden beraten, wie er seine Infrastruktur robuster macht.Mir ist klar, dass das folgende Script eine Momentaufnahme der Auslastung liefert und weder Historie berücksichtigt noch die Statistiken des vCenters zu einem Cluster abfragt. Das ist in Ordnung, denn oft genug liefert das vCenter ohnehin keine verlässlichen Werte.Was dem Script noch fehlt, ist eine Gewichtung der Host-Ressourcen. Es geht davon aus, dass alle Hosts eines Clusters gleich viel CPU und RAM haben. Wenn das nicht stimmt, ist der Prozentwert am Ende nicht besonders genau. **Danke an [LucD](http://www.lucd.info/), der mich darauf gebracht hat.** Unsere Diskussion dazu steht in den VMware Communities [hier](https://communities.vmware.com/thread/568844).Update: Dieses Script liegt inzwischen auf [GitHub](https://github.com/virtualFrog/PowerCLI-Scripts). Sobald ich dazu komme, überlege ich mir, wie sich das im Script lösen lässt. Bis dahin hier die Fassung mit den genannten Einschränkungen:```powershell$clusters = get-cluster$myClusters = @()foreach ($cluster in $clusters) { $hosts = $cluster |get-vmhost [double]$cpuAverage = 0 [double]$memAverage = 0 Write-Host $cluster foreach ($esx in $hosts) { Write-Host $esx [double]$esxiCPUavg = [double]($esx | Select-Object @{N = 'cpuAvg'; E = {[double]([math]::Round(($_.CpuUsageMhz) / ($_.CpuTotalMhz) * 100, 2))}} |Select-Object -ExpandProperty cpuAvg) $cpuAverage = $cpuAverage + $esxiCPUavg [double]$esxiMEMavg = [double]($esx | Select-Object @{N = 'memAvg'; E = {[double]([math]::Round(($_.MemoryUsageMB) / ($_.MemoryTotalMB) * 100, 2))}} |select-object -ExpandProperty memAvg) $memAverage = $memAverage + $esxiMEMavg } $cpuAverage = [math]::Round(($cpuAverage / ($hosts.count) ), 1) $memAverage = [math]::Round(($memAverage / ($hosts.count) ), 1) $ClusterInfo = "" | Select-Object Name, CPUAvg, MEMAvg $ClusterInfo.Name = $cluster.Name $ClusterInfo.CPUAvg = $cpuAverage $ClusterInfo.MEMAvg = $memAverage $myClusters += $ClusterInfo}$myClusters```Und so sieht die Ausgabe aus:![image003](/blog-assets/powercli-getting-the-usage-of-a-cluster/01.webp)'''[status]corpus = 315search = "/de/search.json"[[status.alsoLike]]ref = "posts/vmware-explore-las-vegas-hackathon-2025"score = "1.00"[[status.alsoLike]]ref = "posts/vmware-hackathon-2024-project"score = "1.00"[[status.alsoLike]]ref = "solutions/vmware/vmware-cloud-foundation/addon/business-operations"score = "0.60"
<?xml version="1.0" encoding="UTF-8"?><manifest kind="Post"> <apiVersion>soultec.ch/v1</apiVersion> <metadata> <name>powercli-getting-the-usage-of-a-cluster</name> <locale>de</locale> <labels> <author>dario-doerflinger</author> <series>scripting</series> <entry key="capability/automation">1.81</entry> <entry key="vendor/vmware">0.98</entry> </labels> <annotations> <source>blog-content/posts/de/powercli-getting-the-usage-of-a-cluster.md</source> <route>/de/insights/powercli-getting-the-usage-of-a-cluster/</route> <schema>/nerd/schema/posts.json</schema> <markdown>/de/insights/powercli-getting-the-usage-of-a-cluster.md</markdown> </annotations> </metadata> <spec> <title>Auslastung eines Clusters ermitteln</title> <date>2018-06-04</date> <author>dario-doerflinger</author> <locale>de</locale> <summary>Unsere Kunden holen uns manchmal, um ihre Umgebung durchzusehen. Weil das oft vorkommt, haben wir eine Checkliste, was wir zu Beginn prüfen.</summary> <capabilities> <item>automation</item> </capabilities> <vendors> <item>vmware</item> </vendors> <series>scripting</series> <migrated>2026-08-24</migrated> <translationReviewed>false</translationReviewed> <draft>false</draft> <sections> <section> <body>Unsere Kunden holen uns manchmal, um ihre Umgebung durchzusehen. Weil das ziemlich oft vorkommt, haben wir eine Checkliste mit den Prüfungen, die wir zu Beginn machen. Eine davon ist eine Beurteilung der Cluster-Auslastung. Die hilft uns später, wenn wir den Kunden beraten, wie er seine Infrastruktur robuster macht.Mir ist klar, dass das folgende Script eine Momentaufnahme der Auslastung liefert und weder Historie berücksichtigt noch die Statistiken des vCenters zu einem Cluster abfragt. Das ist in Ordnung, denn oft genug liefert das vCenter ohnehin keine verlässlichen Werte.Was dem Script noch fehlt, ist eine Gewichtung der Host-Ressourcen. Es geht davon aus, dass alle Hosts eines Clusters gleich viel CPU und RAM haben. Wenn das nicht stimmt, ist der Prozentwert am Ende nicht besonders genau. **Danke an [LucD](http://www.lucd.info/), der mich darauf gebracht hat.** Unsere Diskussion dazu steht in den VMware Communities [hier](https://communities.vmware.com/thread/568844).Update: Dieses Script liegt inzwischen auf [GitHub](https://github.com/virtualFrog/PowerCLI-Scripts). Sobald ich dazu komme, überlege ich mir, wie sich das im Script lösen lässt. Bis dahin hier die Fassung mit den genannten Einschränkungen:```powershell$clusters = get-cluster$myClusters = @()foreach ($cluster in $clusters) { $hosts = $cluster |get-vmhost [double]$cpuAverage = 0 [double]$memAverage = 0 Write-Host $cluster foreach ($esx in $hosts) { Write-Host $esx [double]$esxiCPUavg = [double]($esx | Select-Object @{N = 'cpuAvg'; E = {[double]([math]::Round(($_.CpuUsageMhz) / ($_.CpuTotalMhz) * 100, 2))}} |Select-Object -ExpandProperty cpuAvg) $cpuAverage = $cpuAverage + $esxiCPUavg [double]$esxiMEMavg = [double]($esx | Select-Object @{N = 'memAvg'; E = {[double]([math]::Round(($_.MemoryUsageMB) / ($_.MemoryTotalMB) * 100, 2))}} |select-object -ExpandProperty memAvg) $memAverage = $memAverage + $esxiMEMavg } $cpuAverage = [math]::Round(($cpuAverage / ($hosts.count) ), 1) $memAverage = [math]::Round(($memAverage / ($hosts.count) ), 1) $ClusterInfo = "" | Select-Object Name, CPUAvg, MEMAvg $ClusterInfo.Name = $cluster.Name $ClusterInfo.CPUAvg = $cpuAverage $ClusterInfo.MEMAvg = $memAverage $myClusters += $ClusterInfo}$myClusters```Und so sieht die Ausgabe aus:![image003](/blog-assets/powercli-getting-the-usage-of-a-cluster/01.webp) </body> </section> </sections> </spec> <status> <corpus>315</corpus> <alsoLike> <item> <ref>posts/vmware-explore-las-vegas-hackathon-2025</ref> <score>1.00</score> </item> <item> <ref>posts/vmware-hackathon-2024-project</ref> <score>1.00</score> </item> <item> <ref>solutions/vmware/vmware-cloud-foundation/addon/business-operations</ref> <score>0.60</score> </item> </alsoLike> <search>/de/search.json</search> </status></manifest>
# Code generated by the soultec.ch build. DO NOT EDIT.import jsonPAGE = { "apiVersion": "soultec.ch/v1", "kind": "Post", "metadata": { "name": "powercli-getting-the-usage-of-a-cluster", "locale": "de", "labels": { "author": "dario-doerflinger", "series": "scripting", "capability/automation": 1.81, "vendor/vmware": 0.98, }, "annotations": { "source": "blog-content/posts/de/powercli-getting-the-usage-of-a-cluster.md", "route": "/de/insights/powercli-getting-the-usage-of-a-cluster/", "schema": "/nerd/schema/posts.json", "markdown": "/de/insights/powercli-getting-the-usage-of-a-cluster.md", }, }, "spec": { "title": "Auslastung eines Clusters ermitteln", "date": "2018-06-04", "author": "dario-doerflinger", "locale": "de", "summary": "Unsere Kunden holen uns manchmal, um ihre Umgebung durchzusehen. Weil das oft vorkommt, haben wir eine Checkliste, was wir zu Beginn prüfen.", "capabilities": ["automation"], "vendors": ["vmware"], "series": "scripting", "migrated": "2026-08-24", "translationReviewed": False, "draft": False, "sections": [ { "body": ( "Unsere Kunden holen uns manchmal, um ihre Umgebung durchzusehen. Weil das ziemlich oft vorkommt, haben wir eine Checkliste mit den Prüfungen, die wir zu Beginn machen. Eine davon ist eine Beurteilung der Cluster-Auslastung. Die hilft uns später, wenn wir den Kunden beraten, wie er seine Infrastruktur robuster macht.\n" "\n" "Mir ist klar, dass das folgende Script eine Momentaufnahme der Auslastung liefert und weder Historie berücksichtigt noch die Statistiken des vCenters zu einem Cluster abfragt. Das ist in Ordnung, denn oft genug liefert das vCenter ohnehin keine verlässlichen Werte.\n" "\n" "Was dem Script noch fehlt, ist eine Gewichtung der Host-Ressourcen. Es geht davon aus, dass alle Hosts eines Clusters gleich viel CPU und RAM haben. Wenn das nicht stimmt, ist der Prozentwert am Ende nicht besonders genau. **Danke an [LucD](http://www.lucd.info/), der mich darauf gebracht hat.** Unsere Diskussion dazu steht in den VMware Communities [hier](https://communities.vmware.com/thread/568844).\n" "\n" "Update: Dieses Script liegt inzwischen auf [GitHub](https://github.com/virtualFrog/PowerCLI-Scripts). \n" "Sobald ich dazu komme, überlege ich mir, wie sich das im Script lösen lässt. Bis dahin hier die Fassung mit den genannten Einschränkungen:\n" "\n" "```powershell\n" "$clusters = get-cluster\n" "$myClusters = @()\n" "foreach ($cluster in $clusters) {\n" " $hosts = $cluster |get-vmhost\n" "\n" " [double]$cpuAverage = 0\n" " [double]$memAverage = 0\n" "\n" " Write-Host $cluster\n" " foreach ($esx in $hosts) {\n" " Write-Host $esx\n" " [double]$esxiCPUavg = [double]($esx | Select-Object @{N = 'cpuAvg'; E = {[double]([math]::Round(($_.CpuUsageMhz) / ($_.CpuTotalMhz) * 100, 2))}} |Select-Object -ExpandProperty cpuAvg)\n" " $cpuAverage = $cpuAverage + $esxiCPUavg\n" "\n" " [double]$esxiMEMavg = [double]($esx | Select-Object @{N = 'memAvg'; E = {[double]([math]::Round(($_.MemoryUsageMB) / ($_.MemoryTotalMB) * 100, 2))}} |select-object -ExpandProperty memAvg)\n" " $memAverage = $memAverage + $esxiMEMavg\n" " }\n" " $cpuAverage = [math]::Round(($cpuAverage / ($hosts.count) ), 1)\n" " $memAverage = [math]::Round(($memAverage / ($hosts.count) ), 1)\n" " $ClusterInfo = \"\" | Select-Object Name, CPUAvg, MEMAvg\n" " $ClusterInfo.Name = $cluster.Name\n" " $ClusterInfo.CPUAvg = $cpuAverage\n" " $ClusterInfo.MEMAvg = $memAverage\n" " $myClusters += $ClusterInfo\n" "}\n" "$myClusters\n" "```\n" "\n" "Und so sieht die Ausgabe aus:\n" "\n" "![image003](/blog-assets/powercli-getting-the-usage-of-a-cluster/01.webp)" ), }, ], }, "status": { "corpus": 315, "alsoLike": [ { "ref": "posts/vmware-explore-las-vegas-hackathon-2025", "score": "1.00", }, { "ref": "posts/vmware-hackathon-2024-project", "score": "1.00", }, { "ref": "solutions/vmware/vmware-cloud-foundation/addon/business-operations", "score": "0.60", }, ], "search": "/de/search.json", },}if __name__ == "__main__": print(json.dumps(PAGE, indent=2, ensure_ascii=False))
# Code generated by the soultec.ch build. DO NOT EDIT.$Page = [ordered]@{ apiVersion = 'soultec.ch/v1' kind = 'Post' metadata = [ordered]@{ name = 'powercli-getting-the-usage-of-a-cluster' locale = 'de' labels = [ordered]@{ author = 'dario-doerflinger' series = 'scripting' 'capability/automation' = 1.81 'vendor/vmware' = 0.98 } annotations = [ordered]@{ source = 'blog-content/posts/de/powercli-getting-the-usage-of-a-cluster.md' route = '/de/insights/powercli-getting-the-usage-of-a-cluster/' schema = '/nerd/schema/posts.json' markdown = '/de/insights/powercli-getting-the-usage-of-a-cluster.md' } } spec = [ordered]@{ title = 'Auslastung eines Clusters ermitteln' date = '2018-06-04' author = 'dario-doerflinger' locale = 'de' summary = 'Unsere Kunden holen uns manchmal, um ihre Umgebung durchzusehen. Weil das oft vorkommt, haben wir eine Checkliste, was wir zu Beginn prüfen.' capabilities = @('automation') vendors = @('vmware') series = 'scripting' migrated = '2026-08-24' translationReviewed = $false draft = $false sections = @( [ordered]@{ body = @'Unsere Kunden holen uns manchmal, um ihre Umgebung durchzusehen. Weil das ziemlich oft vorkommt, haben wir eine Checkliste mit den Prüfungen, die wir zu Beginn machen. Eine davon ist eine Beurteilung der Cluster-Auslastung. Die hilft uns später, wenn wir den Kunden beraten, wie er seine Infrastruktur robuster macht.Mir ist klar, dass das folgende Script eine Momentaufnahme der Auslastung liefert und weder Historie berücksichtigt noch die Statistiken des vCenters zu einem Cluster abfragt. Das ist in Ordnung, denn oft genug liefert das vCenter ohnehin keine verlässlichen Werte.Was dem Script noch fehlt, ist eine Gewichtung der Host-Ressourcen. Es geht davon aus, dass alle Hosts eines Clusters gleich viel CPU und RAM haben. Wenn das nicht stimmt, ist der Prozentwert am Ende nicht besonders genau. **Danke an [LucD](http://www.lucd.info/), der mich darauf gebracht hat.** Unsere Diskussion dazu steht in den VMware Communities [hier](https://communities.vmware.com/thread/568844).Update: Dieses Script liegt inzwischen auf [GitHub](https://github.com/virtualFrog/PowerCLI-Scripts). Sobald ich dazu komme, überlege ich mir, wie sich das im Script lösen lässt. Bis dahin hier die Fassung mit den genannten Einschränkungen:```powershell$clusters = get-cluster$myClusters = @()foreach ($cluster in $clusters) { $hosts = $cluster |get-vmhost [double]$cpuAverage = 0 [double]$memAverage = 0 Write-Host $cluster foreach ($esx in $hosts) { Write-Host $esx [double]$esxiCPUavg = [double]($esx | Select-Object @{N = 'cpuAvg'; E = {[double]([math]::Round(($_.CpuUsageMhz) / ($_.CpuTotalMhz) * 100, 2))}} |Select-Object -ExpandProperty cpuAvg) $cpuAverage = $cpuAverage + $esxiCPUavg [double]$esxiMEMavg = [double]($esx | Select-Object @{N = 'memAvg'; E = {[double]([math]::Round(($_.MemoryUsageMB) / ($_.MemoryTotalMB) * 100, 2))}} |select-object -ExpandProperty memAvg) $memAverage = $memAverage + $esxiMEMavg } $cpuAverage = [math]::Round(($cpuAverage / ($hosts.count) ), 1) $memAverage = [math]::Round(($memAverage / ($hosts.count) ), 1) $ClusterInfo = "" | Select-Object Name, CPUAvg, MEMAvg $ClusterInfo.Name = $cluster.Name $ClusterInfo.CPUAvg = $cpuAverage $ClusterInfo.MEMAvg = $memAverage $myClusters += $ClusterInfo}$myClusters```Und so sieht die Ausgabe aus:![image003](/blog-assets/powercli-getting-the-usage-of-a-cluster/01.webp)'@ } ) } status = [ordered]@{ corpus = 315 alsoLike = @( [ordered]@{ ref = 'posts/vmware-explore-las-vegas-hackathon-2025' score = '1.00' } [ordered]@{ ref = 'posts/vmware-hackathon-2024-project' score = '1.00' } [ordered]@{ ref = 'solutions/vmware/vmware-cloud-foundation/addon/business-operations' score = '0.60' } ) search = '/de/search.json' }}$Page | ConvertTo-Json -Depth 32
// Code generated by the soultec.ch build. DO NOT EDIT.package mainimport ( "encoding/json" "os")var page = map[string]any{ "apiVersion": "soultec.ch/v1", "kind": "Post", "metadata": map[string]any{ "name": "powercli-getting-the-usage-of-a-cluster", "locale": "de", "labels": map[string]any{ "author": "dario-doerflinger", "series": "scripting", "capability/automation": 1.81, "vendor/vmware": 0.98, }, "annotations": map[string]any{ "source": "blog-content/posts/de/powercli-getting-the-usage-of-a-cluster.md", "route": "/de/insights/powercli-getting-the-usage-of-a-cluster/", "schema": "/nerd/schema/posts.json", "markdown": "/de/insights/powercli-getting-the-usage-of-a-cluster.md", }, }, "spec": map[string]any{ "title": "Auslastung eines Clusters ermitteln", "date": "2018-06-04", "author": "dario-doerflinger", "locale": "de", "summary": "Unsere Kunden holen uns manchmal, um ihre Umgebung durchzusehen. Weil das oft vorkommt, haben wir eine Checkliste, was wir zu Beginn prüfen.", "capabilities": []any{"automation"}, "vendors": []any{"vmware"}, "series": "scripting", "migrated": "2026-08-24", "translationReviewed": false, "draft": false, "sections": []any{ map[string]any{ "body": "Unsere Kunden holen uns manchmal, um ihre Umgebung durchzusehen. Weil das ziemlich oft vorkommt, haben wir eine Checkliste mit den Prüfungen, die wir zu Beginn machen. Eine davon ist eine Beurteilung der Cluster-Auslastung. Die hilft uns später, wenn wir den Kunden beraten, wie er seine Infrastruktur robuster macht.\n" + "\n" + "Mir ist klar, dass das folgende Script eine Momentaufnahme der Auslastung liefert und weder Historie berücksichtigt noch die Statistiken des vCenters zu einem Cluster abfragt. Das ist in Ordnung, denn oft genug liefert das vCenter ohnehin keine verlässlichen Werte.\n" + "\n" + "Was dem Script noch fehlt, ist eine Gewichtung der Host-Ressourcen. Es geht davon aus, dass alle Hosts eines Clusters gleich viel CPU und RAM haben. Wenn das nicht stimmt, ist der Prozentwert am Ende nicht besonders genau. **Danke an [LucD](http://www.lucd.info/), der mich darauf gebracht hat.** Unsere Diskussion dazu steht in den VMware Communities [hier](https://communities.vmware.com/thread/568844).\n" + "\n" + "Update: Dieses Script liegt inzwischen auf [GitHub](https://github.com/virtualFrog/PowerCLI-Scripts). \n" + "Sobald ich dazu komme, überlege ich mir, wie sich das im Script lösen lässt. Bis dahin hier die Fassung mit den genannten Einschränkungen:\n" + "\n" + "```powershell\n" + "$clusters = get-cluster\n" + "$myClusters = @()\n" + "foreach ($cluster in $clusters) {\n" + " $hosts = $cluster |get-vmhost\n" + "\n" + " [double]$cpuAverage = 0\n" + " [double]$memAverage = 0\n" + "\n" + " Write-Host $cluster\n" + " foreach ($esx in $hosts) {\n" + " Write-Host $esx\n" + " [double]$esxiCPUavg = [double]($esx | Select-Object @{N = 'cpuAvg'; E = {[double]([math]::Round(($_.CpuUsageMhz) / ($_.CpuTotalMhz) * 100, 2))}} |Select-Object -ExpandProperty cpuAvg)\n" + " $cpuAverage = $cpuAverage + $esxiCPUavg\n" + "\n" + " [double]$esxiMEMavg = [double]($esx | Select-Object @{N = 'memAvg'; E = {[double]([math]::Round(($_.MemoryUsageMB) / ($_.MemoryTotalMB) * 100, 2))}} |select-object -ExpandProperty memAvg)\n" + " $memAverage = $memAverage + $esxiMEMavg\n" + " }\n" + " $cpuAverage = [math]::Round(($cpuAverage / ($hosts.count) ), 1)\n" + " $memAverage = [math]::Round(($memAverage / ($hosts.count) ), 1)\n" + " $ClusterInfo = \"\" | Select-Object Name, CPUAvg, MEMAvg\n" + " $ClusterInfo.Name = $cluster.Name\n" + " $ClusterInfo.CPUAvg = $cpuAverage\n" + " $ClusterInfo.MEMAvg = $memAverage\n" + " $myClusters += $ClusterInfo\n" + "}\n" + "$myClusters\n" + "```\n" + "\n" + "Und so sieht die Ausgabe aus:\n" + "\n" + "![image003](/blog-assets/powercli-getting-the-usage-of-a-cluster/01.webp)", }, }, }, "status": map[string]any{ "corpus": 315, "alsoLike": []any{ map[string]any{ "ref": "posts/vmware-explore-las-vegas-hackathon-2025", "score": "1.00", }, map[string]any{ "ref": "posts/vmware-hackathon-2024-project", "score": "1.00", }, map[string]any{ "ref": "solutions/vmware/vmware-cloud-foundation/addon/business-operations", "score": "0.60", }, }, "search": "/de/search.json", },}func main() { enc := json.NewEncoder(os.Stdout) enc.SetEscapeHTML(false) enc.SetIndent("", " ") if err := enc.Encode(page); err != nil { os.Exit(1) }}
// Code generated by the soultec.ch build. DO NOT EDIT.const page = { apiVersion: "soultec.ch/v1", kind: "Post", metadata: { name: "powercli-getting-the-usage-of-a-cluster", locale: "de", labels: { author: "dario-doerflinger", series: "scripting", "capability/automation": 1.81, "vendor/vmware": 0.98, }, annotations: { source: "blog-content/posts/de/powercli-getting-the-usage-of-a-cluster.md", route: "/de/insights/powercli-getting-the-usage-of-a-cluster/", schema: "/nerd/schema/posts.json", markdown: "/de/insights/powercli-getting-the-usage-of-a-cluster.md", }, }, spec: { title: "Auslastung eines Clusters ermitteln", date: "2018-06-04", author: "dario-doerflinger", locale: "de", summary: "Unsere Kunden holen uns manchmal, um ihre Umgebung durchzusehen. Weil das oft vorkommt, haben wir eine Checkliste, was wir zu Beginn prüfen.", capabilities: ["automation"], vendors: ["vmware"], series: "scripting", migrated: "2026-08-24", translationReviewed: false, draft: false, sections: [ { body: "Unsere Kunden holen uns manchmal, um ihre Umgebung durchzusehen. Weil das ziemlich oft vorkommt, haben wir eine Checkliste mit den Prüfungen, die wir zu Beginn machen. Eine davon ist eine Beurteilung der Cluster-Auslastung. Die hilft uns später, wenn wir den Kunden beraten, wie er seine Infrastruktur robuster macht.\n" + "\n" + "Mir ist klar, dass das folgende Script eine Momentaufnahme der Auslastung liefert und weder Historie berücksichtigt noch die Statistiken des vCenters zu einem Cluster abfragt. Das ist in Ordnung, denn oft genug liefert das vCenter ohnehin keine verlässlichen Werte.\n" + "\n" + "Was dem Script noch fehlt, ist eine Gewichtung der Host-Ressourcen. Es geht davon aus, dass alle Hosts eines Clusters gleich viel CPU und RAM haben. Wenn das nicht stimmt, ist der Prozentwert am Ende nicht besonders genau. **Danke an [LucD](http://www.lucd.info/), der mich darauf gebracht hat.** Unsere Diskussion dazu steht in den VMware Communities [hier](https://communities.vmware.com/thread/568844).\n" + "\n" + "Update: Dieses Script liegt inzwischen auf [GitHub](https://github.com/virtualFrog/PowerCLI-Scripts). \n" + "Sobald ich dazu komme, überlege ich mir, wie sich das im Script lösen lässt. Bis dahin hier die Fassung mit den genannten Einschränkungen:\n" + "\n" + "```powershell\n" + "$clusters = get-cluster\n" + "$myClusters = @()\n" + "foreach ($cluster in $clusters) {\n" + " $hosts = $cluster |get-vmhost\n" + "\n" + " [double]$cpuAverage = 0\n" + " [double]$memAverage = 0\n" + "\n" + " Write-Host $cluster\n" + " foreach ($esx in $hosts) {\n" + " Write-Host $esx\n" + " [double]$esxiCPUavg = [double]($esx | Select-Object @{N = 'cpuAvg'; E = {[double]([math]::Round(($_.CpuUsageMhz) / ($_.CpuTotalMhz) * 100, 2))}} |Select-Object -ExpandProperty cpuAvg)\n" + " $cpuAverage = $cpuAverage + $esxiCPUavg\n" + "\n" + " [double]$esxiMEMavg = [double]($esx | Select-Object @{N = 'memAvg'; E = {[double]([math]::Round(($_.MemoryUsageMB) / ($_.MemoryTotalMB) * 100, 2))}} |select-object -ExpandProperty memAvg)\n" + " $memAverage = $memAverage + $esxiMEMavg\n" + " }\n" + " $cpuAverage = [math]::Round(($cpuAverage / ($hosts.count) ), 1)\n" + " $memAverage = [math]::Round(($memAverage / ($hosts.count) ), 1)\n" + " $ClusterInfo = \"\" | Select-Object Name, CPUAvg, MEMAvg\n" + " $ClusterInfo.Name = $cluster.Name\n" + " $ClusterInfo.CPUAvg = $cpuAverage\n" + " $ClusterInfo.MEMAvg = $memAverage\n" + " $myClusters += $ClusterInfo\n" + "}\n" + "$myClusters\n" + "```\n" + "\n" + "Und so sieht die Ausgabe aus:\n" + "\n" + "![image003](/blog-assets/powercli-getting-the-usage-of-a-cluster/01.webp)", }, ], }, status: { corpus: 315, alsoLike: [ { ref: "posts/vmware-explore-las-vegas-hackathon-2025", score: "1.00", }, { ref: "posts/vmware-hackathon-2024-project", score: "1.00", }, { ref: "solutions/vmware/vmware-cloud-foundation/addon/business-operations", score: "0.60", }, ], search: "/de/search.json", },};console.log(JSON.stringify(page, null, 2));

# 79 lines · YAML · validated at build# 60 lines · JSON · validated at build# 92 lines · TOML · validated at build# 102 lines · XML · validated at build# 104 lines · Python · read back at build, equals the JSON record# 101 lines · PowerShell · read back at build, equals the JSON record# 114 lines · Go · read back at build, equals the JSON record# 99 lines · JavaScript · read back at build, equals the JSON record · served at /de/insights/powercli-getting-the-usage-of-a-cluster.md

Scripting · 2018-06-04

Auslastung eines Clusters ermitteln

Unsere Kunden holen uns manchmal, um ihre Umgebung durchzusehen. Weil das oft vorkommt, haben wir eine Checkliste, was wir zu Beginn prüfen.

2018-06-04Datum
Dario DörflingerAutor
1Min. Lesezeit
Hersteller VMware 0.98

Dieser Beitrag ist von 2018. Er bleibt online, weil er nach wie vor nachgefragt wird, beschreibt aber einen Produktstand von damals.

Unsere Kunden holen uns manchmal, um ihre Umgebung durchzusehen. Weil das ziemlich oft vorkommt, haben wir eine Checkliste mit den Prüfungen, die wir zu Beginn machen. Eine davon ist eine Beurteilung der Cluster-Auslastung. Die hilft uns später, wenn wir den Kunden beraten, wie er seine Infrastruktur robuster macht.

Mir ist klar, dass das folgende Script eine Momentaufnahme der Auslastung liefert und weder Historie berücksichtigt noch die Statistiken des vCenters zu einem Cluster abfragt. Das ist in Ordnung, denn oft genug liefert das vCenter ohnehin keine verlässlichen Werte.

Was dem Script noch fehlt, ist eine Gewichtung der Host-Ressourcen. Es geht davon aus, dass alle Hosts eines Clusters gleich viel CPU und RAM haben. Wenn das nicht stimmt, ist der Prozentwert am Ende nicht besonders genau. Danke an LucD, der mich darauf gebracht hat. Unsere Diskussion dazu steht in den VMware Communities hier.

Update: Dieses Script liegt inzwischen auf GitHub.
Sobald ich dazu komme, überlege ich mir, wie sich das im Script lösen lässt. Bis dahin hier die Fassung mit den genannten Einschränkungen:

$clusters = get-cluster
$myClusters = @()
foreach ($cluster in $clusters) {
    $hosts = $cluster |get-vmhost

    [double]$cpuAverage = 0
    [double]$memAverage = 0

    Write-Host $cluster
    foreach ($esx in $hosts) {
        Write-Host $esx
        [double]$esxiCPUavg = [double]($esx | Select-Object @{N = 'cpuAvg'; E = {[double]([math]::Round(($_.CpuUsageMhz) / ($_.CpuTotalMhz) * 100, 2))}} |Select-Object -ExpandProperty cpuAvg)
        $cpuAverage = $cpuAverage + $esxiCPUavg

        [double]$esxiMEMavg = [double]($esx | Select-Object @{N = 'memAvg'; E = {[double]([math]::Round(($_.MemoryUsageMB) / ($_.MemoryTotalMB) * 100, 2))}} |select-object -ExpandProperty memAvg)
        $memAverage = $memAverage + $esxiMEMavg
    }
    $cpuAverage = [math]::Round(($cpuAverage / ($hosts.count) ), 1)
    $memAverage = [math]::Round(($memAverage / ($hosts.count) ), 1)
    $ClusterInfo = "" | Select-Object Name, CPUAvg, MEMAvg
    $ClusterInfo.Name = $cluster.Name
    $ClusterInfo.CPUAvg = $cpuAverage
    $ClusterInfo.MEMAvg = $memAverage
    $myClusters += $ClusterInfo
}
$myClusters

Und so sieht die Ausgabe aus:

image003

Passt ausserdem