Alhoewel PowerShell niet voor GUI bedoeld is ben ik er toch mee aan de slag gegaan, aangezien de andere sysadmins dit soort tools blijkbaar liever gebruiken als het een GUI is dan een shell script.
Het huidige script is een script dat op alle servers en virtuele machines kijkt welke sessies er bestaan (via de opensource cassia.dll, voor de geïnteresseerden). Dit alles wordt in een DataGridView gestoken en vervolgens wil ik de gebruiker de mogelijkheid geven om te filteren.
Op momenten als deze merk ik dat ik een echte programmeerachtergrond ontbeer: wat is de efficiëntste methode om deze filters toe te passen?
Eerst een screenshotje:

Let niet op het bericht in de statusbalk, dat was wat spielerei van mijnentwege.
Er zijn vier filters die een waarde 1 of 0 kunnen hebben. Daarnaast is er een tekstinvoervak dat we op dezelfde manier kunnen beschouwen (dwz. is er invoer ja/nee). Dat betekent dat er 5² mogelijke combinaties zijn voor mijn filters.
Toen ik enkel nog het onderscheid maakte tussen Active en Disconnected viel het nog mee:
Door het toevoegen van een filter op MachineType en op UserAccount zou de If-ElseIf-constructie al helemaal monsterlijk worden. Ik hoor graag elegantere oplossingen voor dit van mensen met meer ervaring dan mezelf
Het huidige script is een script dat op alle servers en virtuele machines kijkt welke sessies er bestaan (via de opensource cassia.dll, voor de geïnteresseerden). Dit alles wordt in een DataGridView gestoken en vervolgens wil ik de gebruiker de mogelijkheid geven om te filteren.
Op momenten als deze merk ik dat ik een echte programmeerachtergrond ontbeer: wat is de efficiëntste methode om deze filters toe te passen?
Eerst een screenshotje:

Let niet op het bericht in de statusbalk, dat was wat spielerei van mijnentwege.
Er zijn vier filters die een waarde 1 of 0 kunnen hebben. Daarnaast is er een tekstinvoervak dat we op dezelfde manier kunnen beschouwen (dwz. is er invoer ja/nee). Dat betekent dat er 5² mogelijke combinaties zijn voor mijn filters.
Toen ik enkel nog het onderscheid maakte tussen Active en Disconnected viel het nog mee:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| If (($cbxShowActive.CheckState -EQ 1) -And ($cbxShowDisconnected.CheckState -EQ 0)) { $script:FilteredConnections = $AllConnections | Where-Object {$_.ConnectionState -EQ "Active"} } ElseIf (($cbxShowActive.CheckState -EQ 0) -And ($cbxShowDisconnected.CheckState -EQ 1)) { $script:FilteredConnections = $AllConnections | Where-Object {$_.ConnectionState -EQ "Disconnected"} } ElseIf (($cbxShowActive.CheckState -EQ 1) -And ($cbxShowDisconnected.CheckState -EQ 1)) { $script:FilteredConnections = $AllConnections } ElseIf (($cbxShowActive.CheckState -EQ 0) -And ($cbxShowDisconnected.CheckState -EQ 0)) { $boxStatus.Text = "Completely useless query ignored." $script:FilteredConnections = $AllConnections } Else { $script:FilteredConnections = $AllConnections } |
Door het toevoegen van een filter op MachineType en op UserAccount zou de If-ElseIf-constructie al helemaal monsterlijk worden. Ik hoor graag elegantere oplossingen voor dit van mensen met meer ervaring dan mezelf