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

$ soultec get post/powercli-find-differences-between-dns-name-and-vm-display-name -o yaml$ soultec get post/powercli-find-differences-between-dns-name-and-vm-display-name -o json$ soultec get post/powercli-find-differences-between-dns-name-and-vm-display-name -o toml$ soultec get post/powercli-find-differences-between-dns-name-and-vm-display-name -o xml$ python3 powercli-find-differences-between-dns-name-and-vm-display-name.pyPS> ./powercli-find-differences-between-dns-name-and-vm-display-name.ps1$ go run powercli-find-differences-between-dns-name-and-vm-display-name.go$ node powercli-find-differences-between-dns-name-and-vm-display-name.js

apiVersion: soultec.ch/v1kind: Postmetadata: name: powercli-find-differences-between-dns-name-and-vm-display-name locale: de labels: author: dario-doerflinger series: scripting capability/automation: 1.81 vendor/vmware: 0.98 annotations: source: blog-content/posts/de/powercli-find-differences-between-dns-name-and-vm-display-name.md route: /de/insights/powercli-find-differences-between-dns-name-and-vm-display-name/ schema: /nerd/schema/posts.json markdown: /de/insights/powercli-find-differences-between-dns-name-and-vm-display-name.mdspec: title: Unterschiede zwischen DNS-Name und VM-Anzeigename finden date: 2014-12-09 author: dario-doerflinger locale: de summary: >- Mein Chef wollte einen Report über alle VMs, bei denen der DNS-Hostname und der im Client angezeigte Name auseinanderlaufen. capabilities: [automation] vendors: [vmware] series: scripting migrated: 2026-08-24 comments: 1 translationReviewed: false draft: false sections: - body: | Mein Chef wollte einen Report über alle VMs, bei denen der DNS-Hostname und der im Client angezeigte Name auseinanderlaufen. Der Grund ist einfach: Unsere Backup-Lösung kommt manchmal ins Straucheln, wenn diese Werte nicht übereinstimmen. Und in seltenen Fällen finden wir die VM nicht, für die wir Support leisten sollen, weil der Kunde nur den DNS-Namen kennt und wir VMs nur über den Anzeigenamen finden. Update: Dieses Script liegt inzwischen auf [GitHub](https://github.com/virtualFrog/PowerCLI-Scripts). Lange Geschichte, kurzes Script: ```powershell $OutArray = @() $vms = Get-VM foreach ($vm in $vms) { $myobj = "" | Select "VM", "DNSname", "Status" $guest = Get-VMGuest -VM $vm $pat = "." $vmname = $guest.VmName $hostname = $guest.HostName $myobj.VM = $vmname $myobj.DNSname = $hostname if ( $hostname -ne $null) { $pos = $hostname.IndexOf(".") if ( $pos -ne "-1") { $hostname = $hostname.Substring(0, $pos) } if ( $hostname -ne $vmname ) { Write-Host -ForegroundColor Red "---> The VM: $vm has different DNS and Display-Name!" Write-Host -ForegroundColor Red "---->Hostname: " $hostname Write-Host -ForegroundColor Red "---->VmName: "$vmname $myobj.Status = "Not OK!" } Else { Write-Host -ForegroundColor Green "---> The VM: $vm has identical Names." $myobj.Status = "OK!" } } Else { Write-Host -ForegroundColor Yellow "---> The VM: $vm is not powered-on. Hostname cannot be found in this state!" $myobj.Status = "N/A" } Clear-variable -Name hostname Clear-variable -Name vmname $OutArray += $myobj } $OutArray | Export-Csv "c:\tmp\name_vs_dns_$vcenter.csv" ``` Das Script verbindet sich mit einem vCenter deiner Wahl (füll die Variable $vcenter aus) und liest alle VMs aus. Danach holt es zu jeder VM das Guest-Objekt und legt die Werte in Variablen ab. Weil DNS-Namen immer vom Hostnamen abweichen, sobald DNS mit FQDN arbeitet, zähle ich die Punkte im DNS-Namen. Wenn welche da sind, wird abgeschnitten, sonst passt es. Ist der DNS-Hostname $null, heisst das, dass die VM ausgeschaltet ist oder die nötigen Tools fehlen. Das ist eines meiner ersten PowerShell-Scripts, ich hätte es also wohl mit weniger Variablen hinbekommen, aber es funktioniert. 🙂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-find-differences-between-dns-name-and-vm-display-name", "locale": "de", "labels": { "author": "dario-doerflinger", "series": "scripting", "capability/automation": 1.81, "vendor/vmware": 0.98 }, "annotations": { "source": "blog-content/posts/de/powercli-find-differences-between-dns-name-and-vm-display-name.md", "route": "/de/insights/powercli-find-differences-between-dns-name-and-vm-display-name/", "schema": "/nerd/schema/posts.json", "markdown": "/de/insights/powercli-find-differences-between-dns-name-and-vm-display-name.md" } }, "spec": { "title": "Unterschiede zwischen DNS-Name und VM-Anzeigename finden", "date": "2014-12-09", "author": "dario-doerflinger", "locale": "de", "summary": "Mein Chef wollte einen Report über alle VMs, bei denen der DNS-Hostname und der im Client angezeigte Name auseinanderlaufen.", "capabilities": [ "automation" ], "vendors": [ "vmware" ], "series": "scripting", "migrated": "2026-08-24", "comments": 1, "translationReviewed": false, "draft": false, "sections": [ { "body": "Mein Chef wollte einen Report über alle VMs, bei denen der DNS-Hostname und der im Client angezeigte Name auseinanderlaufen. Der Grund ist einfach: Unsere Backup-Lösung kommt manchmal ins Straucheln, wenn diese Werte nicht übereinstimmen. Und in seltenen Fällen finden wir die VM nicht, für die wir Support leisten sollen, weil der Kunde nur den DNS-Namen kennt und wir VMs nur über den Anzeigenamen finden. \nUpdate: Dieses Script liegt inzwischen auf [GitHub](https://github.com/virtualFrog/PowerCLI-Scripts).\n\nLange Geschichte, kurzes Script:\n\n```powershell\n$OutArray = @()\n\n$vms = Get-VM\nforeach ($vm in $vms)\n{\n$myobj = \"\" | Select \"VM\", \"DNSname\", \"Status\"\n$guest = Get-VMGuest -VM $vm\n$pat = \".\"\n$vmname = $guest.VmName\n$hostname = $guest.HostName\n$myobj.VM = $vmname\n$myobj.DNSname = $hostname\nif ( $hostname -ne $null)\n{\n$pos = $hostname.IndexOf(\".\")\nif ( $pos -ne \"-1\")\n{\n$hostname = $hostname.Substring(0, $pos)\n}\nif ( $hostname -ne $vmname )\n{\nWrite-Host -ForegroundColor Red \"---> The VM: $vm has different DNS and Display-Name!\"\nWrite-Host -ForegroundColor Red \"---->Hostname: \" $hostname\nWrite-Host -ForegroundColor Red \"---->VmName: \"$vmname\n$myobj.Status = \"Not OK!\"\n}\nElse\n{\nWrite-Host -ForegroundColor Green \"---> The VM: $vm has identical Names.\"\n$myobj.Status = \"OK!\"\n}\n}\nElse\n{\nWrite-Host -ForegroundColor Yellow \"---> The VM: $vm is not powered-on. Hostname cannot be found in this state!\"\n$myobj.Status = \"N/A\"\n}\nClear-variable -Name hostname\nClear-variable -Name vmname\n$OutArray += $myobj\n}\n$OutArray | Export-Csv \"c:\\tmp\\name_vs_dns_$vcenter.csv\"\n```\n\nDas Script verbindet sich mit einem vCenter deiner Wahl (füll die Variable $vcenter aus) und liest alle VMs aus. Danach holt es zu jeder VM das Guest-Objekt und legt die Werte in Variablen ab. \nWeil DNS-Namen immer vom Hostnamen abweichen, sobald DNS mit FQDN arbeitet, zähle ich die Punkte im DNS-Namen. Wenn welche da sind, wird abgeschnitten, sonst passt es. Ist der DNS-Hostname $null, heisst das, dass die VM ausgeschaltet ist oder die nötigen Tools fehlen. \nDas ist eines meiner ersten PowerShell-Scripts, ich hätte es also wohl mit weniger Variablen hinbekommen, aber es funktioniert. 🙂" } ] }, "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-find-differences-between-dns-name-and-vm-display-name"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-find-differences-between-dns-name-and-vm-display-name.md"route = "/de/insights/powercli-find-differences-between-dns-name-and-vm-display-name/"schema = "/nerd/schema/posts.json"markdown = "/de/insights/powercli-find-differences-between-dns-name-and-vm-display-name.md"[spec]title = "Unterschiede zwischen DNS-Name und VM-Anzeigename finden"date = 2014-12-09author = "dario-doerflinger"locale = "de"summary = "Mein Chef wollte einen Report über alle VMs, bei denen der DNS-Hostname und der im Client angezeigte Name auseinanderlaufen."capabilities = ["automation"]vendors = ["vmware"]series = "scripting"migrated = 2026-08-24comments = 1translationReviewed = falsedraft = false[[spec.sections]]body = '''Mein Chef wollte einen Report über alle VMs, bei denen der DNS-Hostname und der im Client angezeigte Name auseinanderlaufen. Der Grund ist einfach: Unsere Backup-Lösung kommt manchmal ins Straucheln, wenn diese Werte nicht übereinstimmen. Und in seltenen Fällen finden wir die VM nicht, für die wir Support leisten sollen, weil der Kunde nur den DNS-Namen kennt und wir VMs nur über den Anzeigenamen finden. Update: Dieses Script liegt inzwischen auf [GitHub](https://github.com/virtualFrog/PowerCLI-Scripts).Lange Geschichte, kurzes Script:```powershell$OutArray = @()$vms = Get-VMforeach ($vm in $vms){$myobj = "" | Select "VM", "DNSname", "Status"$guest = Get-VMGuest -VM $vm$pat = "."$vmname = $guest.VmName$hostname = $guest.HostName$myobj.VM = $vmname$myobj.DNSname = $hostnameif ( $hostname -ne $null){$pos = $hostname.IndexOf(".")if ( $pos -ne "-1"){$hostname = $hostname.Substring(0, $pos)}if ( $hostname -ne $vmname ){Write-Host -ForegroundColor Red "---> The VM: $vm has different DNS and Display-Name!"Write-Host -ForegroundColor Red "---->Hostname: " $hostnameWrite-Host -ForegroundColor Red "---->VmName: "$vmname$myobj.Status = "Not OK!"}Else{Write-Host -ForegroundColor Green "---> The VM: $vm has identical Names."$myobj.Status = "OK!"}}Else{Write-Host -ForegroundColor Yellow "---> The VM: $vm is not powered-on. Hostname cannot be found in this state!"$myobj.Status = "N/A"}Clear-variable -Name hostnameClear-variable -Name vmname$OutArray += $myobj}$OutArray | Export-Csv "c:\tmp\name_vs_dns_$vcenter.csv"```Das Script verbindet sich mit einem vCenter deiner Wahl (füll die Variable $vcenter aus) und liest alle VMs aus. Danach holt es zu jeder VM das Guest-Objekt und legt die Werte in Variablen ab. Weil DNS-Namen immer vom Hostnamen abweichen, sobald DNS mit FQDN arbeitet, zähle ich die Punkte im DNS-Namen. Wenn welche da sind, wird abgeschnitten, sonst passt es. Ist der DNS-Hostname $null, heisst das, dass die VM ausgeschaltet ist oder die nötigen Tools fehlen. Das ist eines meiner ersten PowerShell-Scripts, ich hätte es also wohl mit weniger Variablen hinbekommen, aber es funktioniert. 🙂'''[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-find-differences-between-dns-name-and-vm-display-name</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-find-differences-between-dns-name-and-vm-display-name.md</source> <route>/de/insights/powercli-find-differences-between-dns-name-and-vm-display-name/</route> <schema>/nerd/schema/posts.json</schema> <markdown>/de/insights/powercli-find-differences-between-dns-name-and-vm-display-name.md</markdown> </annotations> </metadata> <spec> <title>Unterschiede zwischen DNS-Name und VM-Anzeigename finden</title> <date>2014-12-09</date> <author>dario-doerflinger</author> <locale>de</locale> <summary>Mein Chef wollte einen Report über alle VMs, bei denen der DNS-Hostname und der im Client angezeigte Name auseinanderlaufen.</summary> <capabilities> <item>automation</item> </capabilities> <vendors> <item>vmware</item> </vendors> <series>scripting</series> <migrated>2026-08-24</migrated> <comments>1</comments> <translationReviewed>false</translationReviewed> <draft>false</draft> <sections> <section> <body>Mein Chef wollte einen Report über alle VMs, bei denen der DNS-Hostname und der im Client angezeigte Name auseinanderlaufen. Der Grund ist einfach: Unsere Backup-Lösung kommt manchmal ins Straucheln, wenn diese Werte nicht übereinstimmen. Und in seltenen Fällen finden wir die VM nicht, für die wir Support leisten sollen, weil der Kunde nur den DNS-Namen kennt und wir VMs nur über den Anzeigenamen finden. Update: Dieses Script liegt inzwischen auf [GitHub](https://github.com/virtualFrog/PowerCLI-Scripts).Lange Geschichte, kurzes Script:```powershell$OutArray = @()$vms = Get-VMforeach ($vm in $vms){$myobj = "" | Select "VM", "DNSname", "Status"$guest = Get-VMGuest -VM $vm$pat = "."$vmname = $guest.VmName$hostname = $guest.HostName$myobj.VM = $vmname$myobj.DNSname = $hostnameif ( $hostname -ne $null){$pos = $hostname.IndexOf(".")if ( $pos -ne "-1"){$hostname = $hostname.Substring(0, $pos)}if ( $hostname -ne $vmname ){Write-Host -ForegroundColor Red "---&gt; The VM: $vm has different DNS and Display-Name!"Write-Host -ForegroundColor Red "----&gt;Hostname: " $hostnameWrite-Host -ForegroundColor Red "----&gt;VmName: "$vmname$myobj.Status = "Not OK!"}Else{Write-Host -ForegroundColor Green "---&gt; The VM: $vm has identical Names."$myobj.Status = "OK!"}}Else{Write-Host -ForegroundColor Yellow "---&gt; The VM: $vm is not powered-on. Hostname cannot be found in this state!"$myobj.Status = "N/A"}Clear-variable -Name hostnameClear-variable -Name vmname$OutArray += $myobj}$OutArray | Export-Csv "c:\tmp\name_vs_dns_$vcenter.csv"```Das Script verbindet sich mit einem vCenter deiner Wahl (füll die Variable $vcenter aus) und liest alle VMs aus. Danach holt es zu jeder VM das Guest-Objekt und legt die Werte in Variablen ab. Weil DNS-Namen immer vom Hostnamen abweichen, sobald DNS mit FQDN arbeitet, zähle ich die Punkte im DNS-Namen. Wenn welche da sind, wird abgeschnitten, sonst passt es. Ist der DNS-Hostname $null, heisst das, dass die VM ausgeschaltet ist oder die nötigen Tools fehlen. Das ist eines meiner ersten PowerShell-Scripts, ich hätte es also wohl mit weniger Variablen hinbekommen, aber es funktioniert. 🙂 </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-find-differences-between-dns-name-and-vm-display-name", "locale": "de", "labels": { "author": "dario-doerflinger", "series": "scripting", "capability/automation": 1.81, "vendor/vmware": 0.98, }, "annotations": { "source": "blog-content/posts/de/powercli-find-differences-between-dns-name-and-vm-display-name.md", "route": "/de/insights/powercli-find-differences-between-dns-name-and-vm-display-name/", "schema": "/nerd/schema/posts.json", "markdown": "/de/insights/powercli-find-differences-between-dns-name-and-vm-display-name.md", }, }, "spec": { "title": "Unterschiede zwischen DNS-Name und VM-Anzeigename finden", "date": "2014-12-09", "author": "dario-doerflinger", "locale": "de", "summary": "Mein Chef wollte einen Report über alle VMs, bei denen der DNS-Hostname und der im Client angezeigte Name auseinanderlaufen.", "capabilities": ["automation"], "vendors": ["vmware"], "series": "scripting", "migrated": "2026-08-24", "comments": 1, "translationReviewed": False, "draft": False, "sections": [ { "body": ( "Mein Chef wollte einen Report über alle VMs, bei denen der DNS-Hostname und der im Client angezeigte Name auseinanderlaufen. Der Grund ist einfach: Unsere Backup-Lösung kommt manchmal ins Straucheln, wenn diese Werte nicht übereinstimmen. Und in seltenen Fällen finden wir die VM nicht, für die wir Support leisten sollen, weil der Kunde nur den DNS-Namen kennt und wir VMs nur über den Anzeigenamen finden. \n" "Update: Dieses Script liegt inzwischen auf [GitHub](https://github.com/virtualFrog/PowerCLI-Scripts).\n" "\n" "Lange Geschichte, kurzes Script:\n" "\n" "```powershell\n" "$OutArray = @()\n" "\n" "$vms = Get-VM\n" "foreach ($vm in $vms)\n" "{\n" "$myobj = \"\" | Select \"VM\", \"DNSname\", \"Status\"\n" "$guest = Get-VMGuest -VM $vm\n" "$pat = \".\"\n" "$vmname = $guest.VmName\n" "$hostname = $guest.HostName\n" "$myobj.VM = $vmname\n" "$myobj.DNSname = $hostname\n" "if ( $hostname -ne $null)\n" "{\n" "$pos = $hostname.IndexOf(\".\")\n" "if ( $pos -ne \"-1\")\n" "{\n" "$hostname = $hostname.Substring(0, $pos)\n" "}\n" "if ( $hostname -ne $vmname )\n" "{\n" "Write-Host -ForegroundColor Red \"---> The VM: $vm has different DNS and Display-Name!\"\n" "Write-Host -ForegroundColor Red \"---->Hostname: \" $hostname\n" "Write-Host -ForegroundColor Red \"---->VmName: \"$vmname\n" "$myobj.Status = \"Not OK!\"\n" "}\n" "Else\n" "{\n" "Write-Host -ForegroundColor Green \"---> The VM: $vm has identical Names.\"\n" "$myobj.Status = \"OK!\"\n" "}\n" "}\n" "Else\n" "{\n" "Write-Host -ForegroundColor Yellow \"---> The VM: $vm is not powered-on. Hostname cannot be found in this state!\"\n" "$myobj.Status = \"N/A\"\n" "}\n" "Clear-variable -Name hostname\n" "Clear-variable -Name vmname\n" "$OutArray += $myobj\n" "}\n" "$OutArray | Export-Csv \"c:\\tmp\\name_vs_dns_$vcenter.csv\"\n" "```\n" "\n" "Das Script verbindet sich mit einem vCenter deiner Wahl (füll die Variable $vcenter aus) und liest alle VMs aus. Danach holt es zu jeder VM das Guest-Objekt und legt die Werte in Variablen ab. \n" "Weil DNS-Namen immer vom Hostnamen abweichen, sobald DNS mit FQDN arbeitet, zähle ich die Punkte im DNS-Namen. Wenn welche da sind, wird abgeschnitten, sonst passt es. Ist der DNS-Hostname $null, heisst das, dass die VM ausgeschaltet ist oder die nötigen Tools fehlen. \n" "Das ist eines meiner ersten PowerShell-Scripts, ich hätte es also wohl mit weniger Variablen hinbekommen, aber es funktioniert. 🙂" ), }, ], }, "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-find-differences-between-dns-name-and-vm-display-name' 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-find-differences-between-dns-name-and-vm-display-name.md' route = '/de/insights/powercli-find-differences-between-dns-name-and-vm-display-name/' schema = '/nerd/schema/posts.json' markdown = '/de/insights/powercli-find-differences-between-dns-name-and-vm-display-name.md' } } spec = [ordered]@{ title = 'Unterschiede zwischen DNS-Name und VM-Anzeigename finden' date = '2014-12-09' author = 'dario-doerflinger' locale = 'de' summary = 'Mein Chef wollte einen Report über alle VMs, bei denen der DNS-Hostname und der im Client angezeigte Name auseinanderlaufen.' capabilities = @('automation') vendors = @('vmware') series = 'scripting' migrated = '2026-08-24' comments = 1 translationReviewed = $false draft = $false sections = @( [ordered]@{ body = @'Mein Chef wollte einen Report über alle VMs, bei denen der DNS-Hostname und der im Client angezeigte Name auseinanderlaufen. Der Grund ist einfach: Unsere Backup-Lösung kommt manchmal ins Straucheln, wenn diese Werte nicht übereinstimmen. Und in seltenen Fällen finden wir die VM nicht, für die wir Support leisten sollen, weil der Kunde nur den DNS-Namen kennt und wir VMs nur über den Anzeigenamen finden. Update: Dieses Script liegt inzwischen auf [GitHub](https://github.com/virtualFrog/PowerCLI-Scripts).Lange Geschichte, kurzes Script:```powershell$OutArray = @()$vms = Get-VMforeach ($vm in $vms){$myobj = "" | Select "VM", "DNSname", "Status"$guest = Get-VMGuest -VM $vm$pat = "."$vmname = $guest.VmName$hostname = $guest.HostName$myobj.VM = $vmname$myobj.DNSname = $hostnameif ( $hostname -ne $null){$pos = $hostname.IndexOf(".")if ( $pos -ne "-1"){$hostname = $hostname.Substring(0, $pos)}if ( $hostname -ne $vmname ){Write-Host -ForegroundColor Red "---> The VM: $vm has different DNS and Display-Name!"Write-Host -ForegroundColor Red "---->Hostname: " $hostnameWrite-Host -ForegroundColor Red "---->VmName: "$vmname$myobj.Status = "Not OK!"}Else{Write-Host -ForegroundColor Green "---> The VM: $vm has identical Names."$myobj.Status = "OK!"}}Else{Write-Host -ForegroundColor Yellow "---> The VM: $vm is not powered-on. Hostname cannot be found in this state!"$myobj.Status = "N/A"}Clear-variable -Name hostnameClear-variable -Name vmname$OutArray += $myobj}$OutArray | Export-Csv "c:\tmp\name_vs_dns_$vcenter.csv"```Das Script verbindet sich mit einem vCenter deiner Wahl (füll die Variable $vcenter aus) und liest alle VMs aus. Danach holt es zu jeder VM das Guest-Objekt und legt die Werte in Variablen ab. Weil DNS-Namen immer vom Hostnamen abweichen, sobald DNS mit FQDN arbeitet, zähle ich die Punkte im DNS-Namen. Wenn welche da sind, wird abgeschnitten, sonst passt es. Ist der DNS-Hostname $null, heisst das, dass die VM ausgeschaltet ist oder die nötigen Tools fehlen. Das ist eines meiner ersten PowerShell-Scripts, ich hätte es also wohl mit weniger Variablen hinbekommen, aber es funktioniert. 🙂'@ } ) } 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-find-differences-between-dns-name-and-vm-display-name", "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-find-differences-between-dns-name-and-vm-display-name.md", "route": "/de/insights/powercli-find-differences-between-dns-name-and-vm-display-name/", "schema": "/nerd/schema/posts.json", "markdown": "/de/insights/powercli-find-differences-between-dns-name-and-vm-display-name.md", }, }, "spec": map[string]any{ "title": "Unterschiede zwischen DNS-Name und VM-Anzeigename finden", "date": "2014-12-09", "author": "dario-doerflinger", "locale": "de", "summary": "Mein Chef wollte einen Report über alle VMs, bei denen der DNS-Hostname und der im Client angezeigte Name auseinanderlaufen.", "capabilities": []any{"automation"}, "vendors": []any{"vmware"}, "series": "scripting", "migrated": "2026-08-24", "comments": 1, "translationReviewed": false, "draft": false, "sections": []any{ map[string]any{ "body": "Mein Chef wollte einen Report über alle VMs, bei denen der DNS-Hostname und der im Client angezeigte Name auseinanderlaufen. Der Grund ist einfach: Unsere Backup-Lösung kommt manchmal ins Straucheln, wenn diese Werte nicht übereinstimmen. Und in seltenen Fällen finden wir die VM nicht, für die wir Support leisten sollen, weil der Kunde nur den DNS-Namen kennt und wir VMs nur über den Anzeigenamen finden. \n" + "Update: Dieses Script liegt inzwischen auf [GitHub](https://github.com/virtualFrog/PowerCLI-Scripts).\n" + "\n" + "Lange Geschichte, kurzes Script:\n" + "\n" + "```powershell\n" + "$OutArray = @()\n" + "\n" + "$vms = Get-VM\n" + "foreach ($vm in $vms)\n" + "{\n" + "$myobj = \"\" | Select \"VM\", \"DNSname\", \"Status\"\n" + "$guest = Get-VMGuest -VM $vm\n" + "$pat = \".\"\n" + "$vmname = $guest.VmName\n" + "$hostname = $guest.HostName\n" + "$myobj.VM = $vmname\n" + "$myobj.DNSname = $hostname\n" + "if ( $hostname -ne $null)\n" + "{\n" + "$pos = $hostname.IndexOf(\".\")\n" + "if ( $pos -ne \"-1\")\n" + "{\n" + "$hostname = $hostname.Substring(0, $pos)\n" + "}\n" + "if ( $hostname -ne $vmname )\n" + "{\n" + "Write-Host -ForegroundColor Red \"---> The VM: $vm has different DNS and Display-Name!\"\n" + "Write-Host -ForegroundColor Red \"---->Hostname: \" $hostname\n" + "Write-Host -ForegroundColor Red \"---->VmName: \"$vmname\n" + "$myobj.Status = \"Not OK!\"\n" + "}\n" + "Else\n" + "{\n" + "Write-Host -ForegroundColor Green \"---> The VM: $vm has identical Names.\"\n" + "$myobj.Status = \"OK!\"\n" + "}\n" + "}\n" + "Else\n" + "{\n" + "Write-Host -ForegroundColor Yellow \"---> The VM: $vm is not powered-on. Hostname cannot be found in this state!\"\n" + "$myobj.Status = \"N/A\"\n" + "}\n" + "Clear-variable -Name hostname\n" + "Clear-variable -Name vmname\n" + "$OutArray += $myobj\n" + "}\n" + "$OutArray | Export-Csv \"c:\\tmp\\name_vs_dns_$vcenter.csv\"\n" + "```\n" + "\n" + "Das Script verbindet sich mit einem vCenter deiner Wahl (füll die Variable $vcenter aus) und liest alle VMs aus. Danach holt es zu jeder VM das Guest-Objekt und legt die Werte in Variablen ab. \n" + "Weil DNS-Namen immer vom Hostnamen abweichen, sobald DNS mit FQDN arbeitet, zähle ich die Punkte im DNS-Namen. Wenn welche da sind, wird abgeschnitten, sonst passt es. Ist der DNS-Hostname $null, heisst das, dass die VM ausgeschaltet ist oder die nötigen Tools fehlen. \n" + "Das ist eines meiner ersten PowerShell-Scripts, ich hätte es also wohl mit weniger Variablen hinbekommen, aber es funktioniert. 🙂", }, }, }, "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-find-differences-between-dns-name-and-vm-display-name", locale: "de", labels: { author: "dario-doerflinger", series: "scripting", "capability/automation": 1.81, "vendor/vmware": 0.98, }, annotations: { source: "blog-content/posts/de/powercli-find-differences-between-dns-name-and-vm-display-name.md", route: "/de/insights/powercli-find-differences-between-dns-name-and-vm-display-name/", schema: "/nerd/schema/posts.json", markdown: "/de/insights/powercli-find-differences-between-dns-name-and-vm-display-name.md", }, }, spec: { title: "Unterschiede zwischen DNS-Name und VM-Anzeigename finden", date: "2014-12-09", author: "dario-doerflinger", locale: "de", summary: "Mein Chef wollte einen Report über alle VMs, bei denen der DNS-Hostname und der im Client angezeigte Name auseinanderlaufen.", capabilities: ["automation"], vendors: ["vmware"], series: "scripting", migrated: "2026-08-24", comments: 1, translationReviewed: false, draft: false, sections: [ { body: "Mein Chef wollte einen Report über alle VMs, bei denen der DNS-Hostname und der im Client angezeigte Name auseinanderlaufen. Der Grund ist einfach: Unsere Backup-Lösung kommt manchmal ins Straucheln, wenn diese Werte nicht übereinstimmen. Und in seltenen Fällen finden wir die VM nicht, für die wir Support leisten sollen, weil der Kunde nur den DNS-Namen kennt und wir VMs nur über den Anzeigenamen finden. \n" + "Update: Dieses Script liegt inzwischen auf [GitHub](https://github.com/virtualFrog/PowerCLI-Scripts).\n" + "\n" + "Lange Geschichte, kurzes Script:\n" + "\n" + "```powershell\n" + "$OutArray = @()\n" + "\n" + "$vms = Get-VM\n" + "foreach ($vm in $vms)\n" + "{\n" + "$myobj = \"\" | Select \"VM\", \"DNSname\", \"Status\"\n" + "$guest = Get-VMGuest -VM $vm\n" + "$pat = \".\"\n" + "$vmname = $guest.VmName\n" + "$hostname = $guest.HostName\n" + "$myobj.VM = $vmname\n" + "$myobj.DNSname = $hostname\n" + "if ( $hostname -ne $null)\n" + "{\n" + "$pos = $hostname.IndexOf(\".\")\n" + "if ( $pos -ne \"-1\")\n" + "{\n" + "$hostname = $hostname.Substring(0, $pos)\n" + "}\n" + "if ( $hostname -ne $vmname )\n" + "{\n" + "Write-Host -ForegroundColor Red \"---> The VM: $vm has different DNS and Display-Name!\"\n" + "Write-Host -ForegroundColor Red \"---->Hostname: \" $hostname\n" + "Write-Host -ForegroundColor Red \"---->VmName: \"$vmname\n" + "$myobj.Status = \"Not OK!\"\n" + "}\n" + "Else\n" + "{\n" + "Write-Host -ForegroundColor Green \"---> The VM: $vm has identical Names.\"\n" + "$myobj.Status = \"OK!\"\n" + "}\n" + "}\n" + "Else\n" + "{\n" + "Write-Host -ForegroundColor Yellow \"---> The VM: $vm is not powered-on. Hostname cannot be found in this state!\"\n" + "$myobj.Status = \"N/A\"\n" + "}\n" + "Clear-variable -Name hostname\n" + "Clear-variable -Name vmname\n" + "$OutArray += $myobj\n" + "}\n" + "$OutArray | Export-Csv \"c:\\tmp\\name_vs_dns_$vcenter.csv\"\n" + "```\n" + "\n" + "Das Script verbindet sich mit einem vCenter deiner Wahl (füll die Variable $vcenter aus) und liest alle VMs aus. Danach holt es zu jeder VM das Guest-Objekt und legt die Werte in Variablen ab. \n" + "Weil DNS-Namen immer vom Hostnamen abweichen, sobald DNS mit FQDN arbeitet, zähle ich die Punkte im DNS-Namen. Wenn welche da sind, wird abgeschnitten, sonst passt es. Ist der DNS-Hostname $null, heisst das, dass die VM ausgeschaltet ist oder die nötigen Tools fehlen. \n" + "Das ist eines meiner ersten PowerShell-Scripts, ich hätte es also wohl mit weniger Variablen hinbekommen, aber es funktioniert. 🙂", }, ], }, 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));

# 92 lines · YAML · validated at build# 61 lines · JSON · validated at build# 105 lines · TOML · validated at build# 115 lines · XML · validated at build# 117 lines · Python · read back at build, equals the JSON record# 114 lines · PowerShell · read back at build, equals the JSON record# 127 lines · Go · read back at build, equals the JSON record# 112 lines · JavaScript · read back at build, equals the JSON record · served at /de/insights/powercli-find-differences-between-dns-name-and-vm-display-name.md

Scripting · 2014-12-09

Unterschiede zwischen DNS-Name und VM-Anzeigename finden

Mein Chef wollte einen Report über alle VMs, bei denen der DNS-Hostname und der im Client angezeigte Name auseinanderlaufen.

2014-12-09Datum
Dario DörflingerAutor
2Min. Lesezeit
Hersteller VMware 0.98

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

Mein Chef wollte einen Report über alle VMs, bei denen der DNS-Hostname und der im Client angezeigte Name auseinanderlaufen. Der Grund ist einfach: Unsere Backup-Lösung kommt manchmal ins Straucheln, wenn diese Werte nicht übereinstimmen. Und in seltenen Fällen finden wir die VM nicht, für die wir Support leisten sollen, weil der Kunde nur den DNS-Namen kennt und wir VMs nur über den Anzeigenamen finden.
Update: Dieses Script liegt inzwischen auf GitHub.

Lange Geschichte, kurzes Script:

$OutArray = @()

$vms = Get-VM
foreach ($vm in $vms)
{
$myobj = "" | Select "VM", "DNSname", "Status"
$guest = Get-VMGuest -VM $vm
$pat = "."
$vmname = $guest.VmName
$hostname = $guest.HostName
$myobj.VM = $vmname
$myobj.DNSname = $hostname
if ( $hostname -ne $null)
{
$pos = $hostname.IndexOf(".")
if ( $pos -ne "-1")
{
$hostname = $hostname.Substring(0, $pos)
}
if ( $hostname -ne $vmname )
{
Write-Host -ForegroundColor Red "---> The VM: $vm has different DNS and Display-Name!"
Write-Host -ForegroundColor Red "---->Hostname: " $hostname
Write-Host -ForegroundColor Red "---->VmName: "$vmname
$myobj.Status = "Not OK!"
}
Else
{
Write-Host -ForegroundColor Green "---> The VM: $vm has identical Names."
$myobj.Status = "OK!"
}
}
Else
{
Write-Host -ForegroundColor Yellow "---> The VM: $vm is not powered-on. Hostname cannot be found in this state!"
$myobj.Status = "N/A"
}
Clear-variable -Name hostname
Clear-variable -Name vmname
$OutArray += $myobj
}
$OutArray | Export-Csv "c:\tmp\name_vs_dns_$vcenter.csv"

Das Script verbindet sich mit einem vCenter deiner Wahl (füll die Variable $vcenter aus) und liest alle VMs aus. Danach holt es zu jeder VM das Guest-Objekt und legt die Werte in Variablen ab.
Weil DNS-Namen immer vom Hostnamen abweichen, sobald DNS mit FQDN arbeitet, zähle ich die Punkte im DNS-Namen. Wenn welche da sind, wird abgeschnitten, sonst passt es. Ist der DNS-Hostname $null, heisst das, dass die VM ausgeschaltet ist oder die nötigen Tools fehlen.
Das ist eines meiner ersten PowerShell-Scripts, ich hätte es also wohl mit weniger Variablen hinbekommen, aber es funktioniert. 🙂

Passt ausserdem