Jump to content

PS CSV Export zu HTML mit Hyperlinks


Direkt zur Lösung Gelöst von testperson,
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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 von Kuddel071089
Link zu diesem Kommentar
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 von Kuddel071089
Link zu diesem Kommentar

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 von daabm
Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...