Элементы массива весов Powershell - PullRequest
0 голосов
/ 13 ноября 2018

(PS 101 новичок здесь) Я хочу сделать сценарий powershell для import-csv простого файла «папка, имя компьютера» (созданного приложением), в котором папка будет иметь 8 возможных значений (catchall, sun, mon, tue ... sat). 1 значение - это улов всех, а остальные 7 - дни недели. Я хочу составить список имен компьютеров из группы catch all и экспортировать их в 7 файлов по дням недели, чтобы итоговые файлы уравновешивали 7 дней (поэтому посчитайте каждый день недели, чтобы узнать, какие из них нуждаются в большем количестве Предметы). Мое приложение импортирует 7 файлов, а затем сгенерирует новый файл systems.csv.

$computers = import-csv “Systems.csv” $newsched = $computers | Group "folder"

Это дает мне счет, но я не понимаю, как взять результаты и использовать их для циклов.

Затем я взял бы счетчик catchall и / 7 it, затем посчитал, сколько у каждого дня недели есть цикл и, где я экспортирую-csv поймать все элементы в соответствующий файл дня недели, чтобы сохранить их баланс как можно больше.

1 Ответ

0 голосов
/ 13 ноября 2018

это СТАРЫЙ бит кода, который принимает массив элементов и генерирует набор одинаково возможных пакетов. если бы я переписал его, вместо массива строк, я бы, вероятно, использовал хеш-таблицу, содержащую Key = $BatchNumber & Value = $ArrayOfItems. [ ухмылка ]

однако, он демонстрирует один из способов разбить список на несколько небольших списков, которые почти одинакового размера.

#$GroupList = "test1", "test2", "test3"
#$GroupList = "test1", "test2", "test3", "test4", "test5", "test6"
#$GroupList = "test1", "test2", "test3", "test4", "test5", "test6", "test7", "test8"
$GroupList = "test1", "test2", "test3", "test4", "test5", "test6", "test7", "test8", "test9", "test10", "test11"

$MaxPerBatch = 4
$Delimiter = ", " # one comma plus one space

$Batches = @()

Write-Output "----------"

$NextBatch = ""
$Remaining = $GroupList.Count
$Count = 0

foreach ($Group in $GroupList) {
    $Count++
    if (($Count -lt $MaxPerBatch) -and ($Remaining -gt 0)) {
        $NextBatch += $Group + $Delimiter
    }
    else {
        $NextBatch += $Group
        $Batches += $NextBatch
        $NextBatch = ""
        $Count = 0
    }
    $Remaining--
    if ($Remaining -eq 0) {
        $NextBatch = $NextBatch.TrimEnd($Delimiter)
        $Batches += $NextBatch
    }

}


Write-Output "batch[es] of groups = $($Batches.Count)"
Write-Output ""
Write-Output "collection displayed below ..."
$Batches

Write-Output "++++++++++"

вывод ...

----------
batch[es] of groups = 3

collection displayed below ...
test1, test2, test3, test4
test5, test6, test7, test8
test9, test10, test11
++++++++++
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...