I have a csv file which I am parsing with powershell and it works perfectly. I would like to speed it up. Currently, I call a line that is customized for each groups list of subnets.
I have about 30 groups.
Some groups have one subnet, some have 5 subnets.
I want to set up some sort of loop to parse everything while executing a single Import-CSV. Currently I call Import-CSV once per group. It takes me about 2-4 minutes to parse the entire file depending on the speed of the machine.
The csv file has about 30,000 rows. I am not concerned about running out of resources. This is as much a learning challenge as a desire to make better powershell scripts.
Below is a portion of the one liner that would parse the entire csv file looking only for those items that match, and writing them out to that groups specific csv file.
Example #1
Import-Csv $HostList | Where-Object {$_."IP Address" -Match "^192.1.*" -or $_."IP Address" -Match "^192.2.*" -or $_."IP Address" `-Match "^192.3.*" .....}| do more stuff...Example #2
Import-Csv $HostList | Where-Object {$_."IP Address" -Match "^192.7.*" ....}| do more stuff...The example above is just a snippet from code that works perfectly.
The problem I am asking for help with is, when I loop through the items I am matching against (subnets), if one group has 3 items to match against, another has 1, another has 7, how do I set up such a loop?
Am I using some sort of 'while' $_."IP Address" or...?
Do I create a big 30,000 array (Does PS even use arrays?)
I would love to know what this type of looping is called, and what I can read with examples on how to understand approaching this challenge..
Thank you for any help.
-= Bruce D. Meyer