baktosh
Goto Top

Datensätze aus CSV auslesen, filtern und in Out-Gridview anzeigen

Hallo zusammen,

ich hänge hier aktuell wieder einmal an einem für mich "knackigen" Problem...

Aus einer anderen Powershell Anwendung werden bei der Anlage von Accounts entsprechende Daten in eine CSV geschrieben. Aus dieser CSV Datei möchte ich nun zur weiteren Verarbeitung dem User seine angelegten Accounts des aktuellen Tages filtern und in einem Out-Gridview anzeigen.

Hierzu verwende ich folgendes Script

### Datei zur Verarbeitung/Ansicht importieren ###
$csvFilePath = "\\Pfad\zur\Datei.csv"  
$ImportUser = Import-Csv -Delimiter ";" $csvFilePath -Header Useraccount,Kennwort,Company,Standort,Anlagedatum,Ersteller,Serviceauftrag |Select-Object -Skip 1  
$aktuellesDatum = Get-Date -Format "dd/MM/yyyy"  

### Filtern und nur Zeilen anzeigen, die vom Ersteller am heutigen Tage angelegt wurden ###
$CreatedUser = $ImportUser | Where-Object {($_.Ersteller -eq $env:username) -and ($_.Anlagedatum -like "$aktuellesDatum*")} |  
select @{Label=’Windowsuser’;E={($_.Useraccount)}}, 
@{Label=’Kennwort’;E={($_.Kennwort)}},
@{Label=’Company’;E={($_.Company)}},
@{Label=’Standort’;E={($_.Standort)}},
@{Label=’Anlagedatum’;E={($_.Anlagedatum)}},
@{Label=’Ersteller’;E={($_.Ersteller)}},
@{Label=’Serviceauftrag’;E={($_.Serviceauftrag)}}

### Ergebnis in einem GridView Form anzeigen ###
if ($CreatedUser.Count -ge 1) {
    $CreatedUser | Out-GridView -Title "Übersicht Accountanlage" -Wait  
}Else{
    [System.Windows.Forms.MessageBox]::Show("Es wurden keine Anlagen von Ihnen am $aktuellesDatum gefunden")  
}

Meine Problematik an der Sache, ist nun das der Code eigentlich funktioniert, jedoch nur wenn der User bereits mehr als 1 Anlage getätigt hat.
Bei keiner Anlage oder nur 1 Anlage wird generell die Message-Box angezeigt.

Als Abhilfe habe ich hier auch schon versucht anstatt -ge 1 -gt 0 zu verwenden, komme aber zum gleichen Ergebnis.

Wäre klasse wenn mir da jemand aufzeigen/berichtigen könnte was da falsch läuft.
Gerne auch mit nem anderen Suchcode

Viele Grüße und schon mal Danke im Voraus

Content-Key: 13158749842

Url: https://administrator.de/contentid/13158749842

Printed on: May 3, 2024 at 15:05 o'clock

Member: Crusher79
Crusher79 Nov 03, 2023 at 18:43:24 (UTC)
Goto Top
Hallo

Nur als Gedanke. Was ist der aktuelle Vergleich? Siehst du mit debug in VS Code oder wenn du var. Count mal einfach über den if Block knallsrt.

Mitunter vertut man sich. Array beginnt eh bei 0.Hier ist es Objekt count.

Breakpoint und sieh dir an was PS gerade sieht!

Ist PS vorher mal abgekackt etc ist es eine gute Methode mit frisch gestarteter GUI noch mal rein zu schauen. Werden var nicht sauber zurückgesetzt packt man auch immer eine Schippe drauf. Init mit 0 oder null oder blank kann dann helfen....
Mitglied: 8030021182
Solution 8030021182 Nov 04, 2023 updated at 13:48:49 (UTC)
Goto Top
Hi.
### Datei zur Verarbeitung/Ansicht importieren ###
$csvFilePath = "\\Pfad\zur\Datei.csv"    
$ImportUser = Import-Csv -Delimiter ";" $csvFilePath -Header WindowsUser,Kennwort,Company,Standort,Anlagedatum,Ersteller,Serviceauftrag | Select-Object -Skip 1    
$aktuellesDatum = Get-Date -Format "dd/MM/yyyy"    

### Filtern und nur Zeilen anzeigen, die vom Ersteller am heutigen Tage angelegt wurden ###
$CreatedUser = $ImportUser | Where-Object {$_.WindowsUser -eq $env:username -and $_.Anlagedatum -like "$aktuellesDatum*"}  

### Ergebnis in einem GridView Form anzeigen ###
if ($CreatedUser) {
    $CreatedUser | Out-GridView -Title "Übersicht Accountanlage" -Wait    
}Else{
    [System.Windows.Forms.MessageBox]::Show("Es wurden keine Anlagen von Ihnen am $aktuellesDatum gefunden")    
}
Gruß Katrin
Member: Baktosh
Baktosh Nov 06, 2023 at 12:59:13 (UTC)
Goto Top
Danke dir Katrin

Manchmal sind es wirklich die einfachen Dinge


VG