02. maj 2018 - 14:43Der er
3 kommentarer og 1 løsning
POWERSHELL: Undlade string med bestemt indhold
Hvordan filtrer jeg strings med bestemt indhold? Jeg har denne, men kan ikke lige få det til at virke. for ($i=0;$i -le $aDirectReports.Count-1; $i++) { if ($aDirectReports[$i] -notmatch "Admin" -or $aDirectReports[$i] -notmatch "Graveyard" -or $aDirectReports[$i] -notmatch "Resources" -or $aDirectReports[$i] -notmatch "Leavers") { $aDirectReports[$i] } }
Du skal bruge -and i stedet for -or. De strings du vil filtrere må ikke indeholde nogen af de fire ord, derfor skal alle fire -notmatch statements være opfyldt, før ordet udskrives.
If-sætningen evaluerer heller ikke på om alle fire ord findes i inputtet samtidigt hvis du bruger -and, den evaluerer hvert ord for sig. Så dit input udskrives kun, hvis dit input IKKE indeholder nogle af ordene.
Du kunne evt. også drage nytte af at -notmatch kan bruges med regular expressions. Jeg syntes det øger læsbarheden: $Filter = @("Admin", "Graveyard", "Resources", "Leavers") -join "|" foreach($Item in $aDirectReports) { if($Item -notmatch $Filter) { $Item } }
Pisse smart. Den havde jeg ikke lige tænkt på. Tak for hjælpen.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.