Mehrere CSV-Dateien auslesen, bearbeiten und wieder speichern über PowerShell
Hallo Zusammen,
ich komme in der PowerShell nicht weiter. Wahrscheinlich ist es für euch eine Kleinigkeit, für mich aber gerade nicht zu lösen.
Situation:
Einige Clients speichern auf ein Netzlaufwerk Computerinformationen von sich in Form einer CSV-Datei ab. Diese CSV-Dateien beinhalten dann solche Sachen wie Computername, aktueller User, letzter User, IP, Online/Offline etc. Die Dateien sind nach den Computernamen (Hostnamen) der PCs benannt.
Ein PowerShell-Skript soll nun diese Dateien einlesen und prüfen, ob der Status Online oder Offline noch korrekt ist anhand eines Pings über die IP und den jeweilige Status in die CSV an diese Stelle schreiben. Ist der PC Offline, soll zusätzlich der aktuelle User und der letzte User rausgelöscht- und durch ein "X" ersetzt werden. Anschließend soll die CSV einfach wieder mit dem alten Hostnamen des PCs abgespeichert/aktualisiert werden.
Infos zu der CSV:
So sieht aktuell eine der CSVs aus
(Computername);(Username Angemeldet);(Username Abgemeldet);(Standort);(IPAdresse);(MacAdresse);(Status Online/Offline)
Die CSV-Dateien haben keinen Header.
Was ich bis jetzt geschafft habe:
Ich kann eine einzelne Datei aufrufen, die Verbindung testen und abfragen. Ich kann sie nicht abspeichern und nicht in eine Schleife bauen.
Ist für euch vielleicht ganz einfach.
Wäre schön, wenn mir jemand helfen könnte.
Danke und LG!
ich komme in der PowerShell nicht weiter. Wahrscheinlich ist es für euch eine Kleinigkeit, für mich aber gerade nicht zu lösen.
Situation:
Einige Clients speichern auf ein Netzlaufwerk Computerinformationen von sich in Form einer CSV-Datei ab. Diese CSV-Dateien beinhalten dann solche Sachen wie Computername, aktueller User, letzter User, IP, Online/Offline etc. Die Dateien sind nach den Computernamen (Hostnamen) der PCs benannt.
Ein PowerShell-Skript soll nun diese Dateien einlesen und prüfen, ob der Status Online oder Offline noch korrekt ist anhand eines Pings über die IP und den jeweilige Status in die CSV an diese Stelle schreiben. Ist der PC Offline, soll zusätzlich der aktuelle User und der letzte User rausgelöscht- und durch ein "X" ersetzt werden. Anschließend soll die CSV einfach wieder mit dem alten Hostnamen des PCs abgespeichert/aktualisiert werden.
Infos zu der CSV:
So sieht aktuell eine der CSVs aus
(Computername);(Username Angemeldet);(Username Abgemeldet);(Standort);(IPAdresse);(MacAdresse);(Status Online/Offline)
1
PC-Einkauf1;Müller;Schmitt;Maierstraße1;172.16.10.31;F4-F5-F6-F7-F8-F9;Online
Was ich bis jetzt geschafft habe:
Ich kann eine einzelne Datei aufrufen, die Verbindung testen und abfragen. Ich kann sie nicht abspeichern und nicht in eine Schleife bauen.
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
$Header = "Hostname","Username Angemeldet","Username Abgemeldet","Standort","IPAdresse","MacAdresse","Online/Offline"
$Content = import-csv -Path "\\Server1\PC-Informationen\PC-Einkauf1.csv" -header $Header -Delimiter ";"
if (test-connection $Content.IPAdresse -count 1 -Quiet)
{
$Content."Online/Offline" = "Online"
}
else
{
$Content."Online/Offline" = "Offline"
}
echo $Content."Online/Offline"
Ist für euch vielleicht ganz einfach.
Wäre schön, wenn mir jemand helfen könnte.
Danke und LG!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 2627183874
Url: https://administrator.de/forum/mehrere-csv-dateien-auslesen-bearbeiten-und-wieder-speichern-ueber-powershell-2627183874.html
Ausgedruckt am: 22.02.2025 um 02:02 Uhr
8 Kommentare
Neuester Kommentar
Servus,
hiermit sollte jede CSV nacheinander eingelesen, verarbeitet und mit neuem Inhalt gespeichert werden:
(Code nicht getestet!)
Wenn du CSVs mit mehreren Einträgen hast, dann muss man ggf. noch ein wenig umbauen...
hiermit sollte jede CSV nacheinander eingelesen, verarbeitet und mit neuem Inhalt gespeichert werden:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Get-ChildItem *.csv -Recurse | foreach {
$Header = "Hostname","Username Angemeldet","Username Abgemeldet","Standort","IPAdresse","MacAdresse","Online/Offline"
$Content = import-csv -Path "\\Server1\PC-Informationen\PC-Einkauf1.csv" -header $Header -Delimiter ";"
if (test-connection $Content.IPAdresse -count 1 -Quiet)
{
$Content."Online/Offline" = "Online"
}
else
{
$Content."Online/Offline" = "Offline"
}
$Content | Out-File $_
}
(Code nicht getestet!)
Wenn du CSVs mit mehreren Einträgen hast, dann muss man ggf. noch ein wenig umbauen...
Sorry, mein Fehler...
so sollte es hoffentlich gehen....
Zeile 4:
Vielleicht auch interessant zu lesen: https://redmondmag.com/articles/2020/04/09/how-to-use-csv-with-powershel ...
so sollte es hoffentlich gehen....
Zeile 4:
1
$Content = import-csv -Path $_.Fullname -header $Header -Delimiter ";"
Vielleicht auch interessant zu lesen: https://redmondmag.com/articles/2020/04/09/how-to-use-csv-with-powershel ...