Kuddel071089 9 Geschrieben 25. April 2023 Melden Teilen Geschrieben 25. April 2023 (bearbeitet) Hallo zusammen, ich habe bei uns einen CSV-Export gebaut, der alle virtuellen Maschinen auflistet und das entsprechende VMware vCenter dazu. Das Konvertieren zu einer HTML Seite, um die Infos im Brwoser anzeigen zu lassen, hat ohne Probleme geklapt. Leider scheitere ich daran, dass die Links zu den vCenter als Hyperlink dargestellt werden. Wie genau bekommen ich das hin? Im CSV-Export ist in der Spalte Link z.B. der Wert "https://vcenter_1.xxxxxx.de/ui" hinterlegt. Dieser Wert soll jetzt als Hyperlink dargestellt werden. Mein Konvertierungsbefehl sieht aktuell wie folgend aus: $servers_tmp | Export-CSV -Path C:\tmp.csv -NoTypeInformation -Encoding UTF8 $Header = @" <style> TABLE {border-width: 1px; border-style: solid; border-color: black; border-collapse: collapse;} TH {border-width: 1px; padding: 3px; border-style: solid; border-color: black; background-color: #6DBC59;} TD {border-width: 1px; padding: 3px; border-style: solid; border-color: black;} </style> "@ Import-Csv C:\tmp.csv | ConvertTo-Html -Property Servername,Funktion,vCenter,Link -Head $Header | Out-File C:\VMware_vCenter_Uebersicht.html bearbeitet 25. April 2023 von Kuddel071089 Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 25. April 2023 Melden Teilen Geschrieben 25. April 2023 Ich meine ConvertTo-Html kann das nicht und du müsstes diese Funktion nachbauen. Zitieren Link zu diesem Kommentar
Beste Lösung testperson 1.677 Geschrieben 25. April 2023 Beste Lösung Melden Teilen Geschrieben 25. April 2023 Hi, du kannst im Nachgang die HTML Datei nochmal einlesen und zeilenweise durchgehen und dabei dann einfach den passenden HTML Code für Links ergänzen. Gruß Jan Zitieren Link zu diesem Kommentar
Kuddel071089 9 Geschrieben 25. April 2023 Autor Melden Teilen Geschrieben 25. April 2023 (bearbeitet) vor 19 Minuten schrieb testperson: Hi, du kannst im Nachgang die HTML Datei nochmal einlesen und zeilenweise durchgehen und dabei dann einfach den passenden HTML Code für Links ergänzen. Gruß Jan Ah guter Ansatz, werde ich mal testen.. EDIT: @testperson hat geklappt. Am Ende habe ich jetzt folgendes eingeführt (Get-Content C:\VMware_vCenter_Uebersicht.html) | ForEach-Object {$_ -replace "https://vcenter_1.****.de/ui/", '<a href="https://vcenter_1.****.de/ui/">vCenter-1</a>'} | Set-Content C:\VMware_vCenter_Uebersicht.html (Get-Content C:\VMware_vCenter_Uebersicht.html) | ForEach-Object {$_ -replace "https://vcenter_2.****.de/ui/", '<a href="https://vcenter_2.****.de/ui/">vCenter-2</a>'} | Set-Content C:\VMware_vCenter_Uebersicht.html (Get-Content C:\VMware_vCenter_Uebersicht.html) | ForEach-Object {$_ -replace "https://vcenter_3.****.de/ui/", '<a href="https://vcenter_3.****.de/ui/">vCenter-3</a>'} | Set-Content C:\VMware_vCenter_Uebersicht.html (Get-Content C:\VMware_vCenter_Uebersicht.html) | ForEach-Object {$_ -replace "https://vcenter_4.****.de/ui/", '<a href="https://vcenter_4.****.de/ui/">vCenter-4</a>'} | Set-Content C:\VMware_vCenter_Uebersicht.html bearbeitet 25. April 2023 von Kuddel071089 Zitieren Link zu diesem Kommentar
daabm 1.354 Geschrieben 25. April 2023 Melden Teilen Geschrieben 25. April 2023 (bearbeitet) Als Tip für die Zukunft: Get-Content brauchst Du nur einmal am Anfang, und Set-Content nur einmal am Ende Der -replace Operator ist Regex, der kann also in der Suchfolge einen Capture machen, den Du im Replace-Teil wiederverwenden kannst. Deine 4 Zeilen könntest Du damit reduzieren auf Get-Content C:\VMware_vCenter_Uebersicht.html | ForEach-Object {$_ -replace '^(https://(vcenter_\d).+/ui/)$', '<a href="$1">$2</a>'} | Set-Content C:\VMware_vCenter_Uebersicht.html Die Klammern sind Capture Groups und werden anhand der öffnenden Klammer durchnumeriert. Der erste Match enthält die komplette URL, der zweite Match nur noch vcenter_ und eine Zahl. Edit: -replace interpretiert das nur dann als Regex, wenn Du einfache Hochkommas verwendest. Und statt '^(https://(vcenter_\d).+/ui/)$' könntest Du auch '^(https://([^/]+)/.+/ui/)$' verwenden, damit würde in $2 alles landen bis zum ersten Slash ('/'). bearbeitet 25. April 2023 von daabm Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.