Powershell foreach IF Abfrage
Hallo, leider finde ich kein passendes Thema zu Powershell Script, falls es falsch ist, bitte löschen.
Ich habe eine CSV Datei mit Vorname und Nachnahme,
z.B.
Torsten Tester
Silke Muster
Aufgabe: Ich trage den Vornamen und Nachnahmen via Input in die Shell und das Script soll dann mit eine foreach Schleife die CSV durchsuchen und bei richtigen Treffer die Ausgabe "Torsten Tester ist vorhanden" schreiben und falls nicht "Torsten Tester ist nicht vorhanden"
Die Abfrage erfolgt und das funktioniert auch, leider kommt die Ausgabe falsch bzw. zu oft.
Wenn ich z.B. Silke Muster suche, dann kommt bei jeder Abfrage der Schleife "ist nicht vorhanden" bist er zu der Zeile kommt, wo der Name vorhanden ist und wenn es einen Namen gar nicht gibt kommt die Ausgabe "nicht vorhanden" so oft wieviele Einträge es gibt.
Hat da jemand eine Idee? Vielen Dank
Ich habe eine CSV Datei mit Vorname und Nachnahme,
z.B.
Torsten Tester
Silke Muster
Aufgabe: Ich trage den Vornamen und Nachnahmen via Input in die Shell und das Script soll dann mit eine foreach Schleife die CSV durchsuchen und bei richtigen Treffer die Ausgabe "Torsten Tester ist vorhanden" schreiben und falls nicht "Torsten Tester ist nicht vorhanden"
Die Abfrage erfolgt und das funktioniert auch, leider kommt die Ausgabe falsch bzw. zu oft.
Wenn ich z.B. Silke Muster suche, dann kommt bei jeder Abfrage der Schleife "ist nicht vorhanden" bist er zu der Zeile kommt, wo der Name vorhanden ist und wenn es einen Namen gar nicht gibt kommt die Ausgabe "nicht vorhanden" so oft wieviele Einträge es gibt.
Hat da jemand eine Idee? Vielen Dank
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 2184667433
Url: https://administrator.de/contentid/2184667433
Ausgedruckt am: 25.11.2024 um 09:11 Uhr
12 Kommentare
Neuester Kommentar
Moin,
naja ist ja auch klar. In jeder Zeile die nicht gleich EmployeeID ist wird "... ist nicht vorhanden ausgeben".
Du das umstricken, so daß beim ersten Aufinden "... ist vorhanden" ausgebeben und dann abgebrochen wird. Wenn am Ende der Datei nix gefunden wurde, must einmalig "... ist nicht vorhanden " ausgegeben werden.
lg,
Slainte
naja ist ja auch klar. In jeder Zeile die nicht gleich EmployeeID ist wird "... ist nicht vorhanden ausgeben".
Du das umstricken, so daß beim ersten Aufinden "... ist vorhanden" ausgebeben und dann abgebrochen wird. Wenn am Ende der Datei nix gefunden wurde, must einmalig "... ist nicht vorhanden " ausgegeben werden.
lg,
Slainte
UND ich würde das Script anders aufbauen:
$EmployeeID = Read-Host -Prompt "bitte geben Sie den Vornamen ein"
$Employee_list = Import-Csv C:\Test.csv -Delimiter ";" | where-object { $_.firstname -eq $EmployeeID}
If ($Employee_list.Count -gt 0) {
Write-Host "$EmployeeID kommt $($Employee_list.Count) mal vor"
} else {
write-Host "$EmployeeID ist nicht vorhanden"
}
Zitat von @SlainteMhath:
UND ich würde das Script anders aufbauen:
Ja so, oder aber auch einfach ein IF mit "-contains" oder "-in" auf das IF würde ich eigentlich verzichten. Also um zu validieren, ob der Name in der CSV vorkommt.
In seiner Variante lädt er ja erst die gesamte CSV ins Objekt und validiert dann Zeile für Zeile. "Ich" erfasse von vornherein nur jene, die auch dem erfassten Vornamen entsprechen.
Wir wissen ja nicht, wie groß diese CSV ist. sind es 10 Datensätze oder 10 Mrd.!?
Aber per se hast du natürlich recht