Scriptelés – Tömbök felbontása kisebb tömbökre
Találkoztál már olyan problémával, ahol egy hosszú listát szerettél volna feldarabolni? Például egy hosszú bevásárlólista, amelynek tételeit nem egyedül szeretnéd megvásárolni. Vagy IP címek és hosztnevek hosszú listája, Active Directory objektumok…Akármi. És ezt a hosszú listát fel szeretnéd darabolni kisebb listákra, hogy párhuzamosan lehessen ezeket futtatni, vagy a script lépcsőzetes futtatása érdekében (biztosítva, hogy a script egyidejűleg csak egy a lista kisebb részén fusson le, de az egészen egyszerre).
Daraboljunk fel egy hosszú hosztnévlistát 6 részre! Ez sokféleképp végrehajtható. Én ezt az egy sorost használtam:
$NumberOfArrays = 6; $NewArrays = @{}; $i = 0; gc c:\hostlist.txt | %{$NewArrays[$i % $NumberOfArrays] += @($_); $i++}; $NewArrays
Pár trükköt alkalmaztam.
Az első a modulus operátor (%), amely a maradékot adja meg két integer osztása esetén. Ez azt jelenti, hogyha mod műveletet hajt végre egy futó számig (1-től a lista maximális számáig) azzal a számmal, ahány felé a listát szeretné darabolni, akkor ez ismételni fogja a számok sorozatát 0-tól osztó-1 értékig. Így valahogy:
Indexszámok növelése a lista felosztásához
Forrás: http://tompaps.blogspot.hu/ Szerző: Kuti Balázs