Powershell平衡阵列元素

时间:2018-11-13 15:54:09

标签: powershell

(此处为PS 101新手) 我想制作一个Powershell脚本来导入csv一个简单的“文件夹,计算机名”文件(由应用程序生成),其中该文件夹将具有8个可能的值(catchall,sun,mon,tue ... sat)。 1个值表示全部捕获,其他7个表示一周中的几天。我想列出“全部捕获”组中的计算机名称,并将它们导出到一周中的7个文件中,以使生成的文件使7天保持平衡(因此,请计算一周中的每一天,以了解哪些文件需要更多项)。我的应用程序将导入7个文件,然后再生成一个新的systems.csv文件。

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

这使我获得了计数,但我不知道如何获取结果并将其用于循环。

然后我会计算catchall的数量和/ 7,然后计算一周中每天有多少个and循环,在这里我导出-csv将所有元素捕获到一周中的适当日期文件以保持平衡尽可能地。

1 个答案:

答案 0 :(得分:0)

这是一堆旧代码,它使用一组项目并生成一组相等可能的批处理。如果我要重写它而不是字符串数组,则可能会使用包含for (row <- df.rdd.collect){ var config_key = row.mkString(",").split(",")(0) var config_value = row.mkString(",").split(",")(1) val rc_applied_hiveQuery="select * from emp_details_Spark2 where empid_details= 'empid' limit 10" var str_row = rc_applied_hiveQuery.replaceAll("\\b"+config_key+"\\b", "xyz") println(str_row)} 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 "++++++++++"