lima-city: Webhosting, Domains und Cloud
0 Pluspunkte 0 Minuspunkte

Ich habe eine Excel Datei mit 2 Spalten

IP;Name
10.0.1.12;server1
10.0.2.31;server2
10.0.2.2;server3

Ich möchte eine neue Spalte "Netzwerk" einfügen und bei jedem Server eintragen in welchem Netzwerk er ist. Dazu habe ich eine Liste als Array z.B.

10.0.1.0 = UserLAN
10.0.2.0 = AdminLan

Wie kann ich zu jeder Zeile automatisch das Netz einfügen?

von  

1 Antwort

0 Pluspunkte 0 Minuspunkte

Dieses Script liest die CSV Datei zeilenweise ein und analysiert die IP Adresse anhand deines Arrays um das entsprechende Netzwerk zuzuordnen.

# Netzwerkliste als Hashtable definieren
$netzwerke = @{
    "10.0.1.0" = "UserLAN"
    "10.0.2.0" = "AdminLan"
}

# CSV-Datei einlesen (angepasst für Semikolon als Trennzeichen)
$daten = Import-Csv -Path "C:\test.csv" -Delimiter ';'

# Neue Objekte mit Netzwerkzuordnung erstellen
$neueDaten = $daten | ForEach-Object {
    $ip = $_.IP
    $netz = ($ip -replace '(\d+\.\d+\.\d+)\.\d+', '$1.0') # z.B. 10.0.2.31 → 10.0.2.0
    $netzwerk = $netzwerke[$netz]  # Hole Netzwerkname

    # Neues Objekt mit allen Spalten inkl. Netzwerk
    [PSCustomObject]@{
        IP       = $_.IP
        Name     = $_.Name
        Netzwerk = $netzwerk
    }
}

# Neue CSV-Datei exportieren
$neueDaten | Export-Csv -Path "C:\test2.csv" -Delimiter ';' -NoTypeInformation
von (686 Punkte)