Avatar billede Johnnie Novice
17. maj 2019 - 08:20 Der er 3 kommentarer

powershell random x- antal grupper

Der skal udarbejdes et powershell script, som via. en CSV fil med fornavn og efternavn, kan generere RANDOM x-antal grupper, ud fra x-antal medlemmer i gruppen, disse grupper skal via. out-file over i en txt fil
Avatar billede CRKrogh Ekspert
18. maj 2019 - 20:02 #1
Hvordan ser use-case ud for sådan en opgave - skole, måske?
Avatar billede RasmusE Praktikant
20. maj 2019 - 10:38 #2
$CSVPath          = "$PSScriptRoot/PersonList.csv"                        #Sti til CSV fil
$personList      = import-csv -Path $CSVPath                              #Importer CSV fil til denne variabel
$groupCount      = get-random -Minimum 1 -Maximum $personList.Count      #Tilfældigt antal grupper
$personCount      = get-random -Minimum 2 -Maximum ($personList.Count - 1) #Tilfældigt antal personer i en gruppe
$personListOffset = 0                                                      #Offset der bruges til at hente personer fra PersonList til hver gruppe (Udregn index) - offset øges efter hver gruppe
$groupsCreated    = 0                                                      #Antal oprettede grupper - bruges til meddelse til sidst

for ($i = 0; $i -lt $groupCount; $i++) {                                  #Loop alle grupper igennem
    $created  = $false                                                    #Bruges til at angive om gruppen blev oprettet
    $groupPath = "$PSScriptRoot/Group_$($i + 1).txt"                      #Stien til gruppefilen (txt-filen)

    for ($j = 0; $j -lt $personCount; $j++) {                              #Loop igennem antal (random) personer
        $index = $j + $personListOffset                                    #Udregn index med offset (Offset øges efter hver gruppe)

        if ($index -lt $personList.Count) {                                #Hvis der stadig er flere personer tilbage så tilføj til gruppe-filen
            if ((Test-Path $groupPath) -and (-not $created)) {            #Hvis gruppe-filen findes fra tidligere eksekvering så slet den (Ny fil)
                Remove-Item $groupPath -Force
            }

            $currPerson = $personList.get($j + $personListOffset)          #Hent personen fra PersonList

            "$($currPerson.Fornavn) $($currPerson.Efternavn)" | out-file -FilePath $groupPath -Append #Tilføj personen til filen (Med Out-File)
            $created = $true                                              #Sæt flag der indikerer at gruppen blev oprettet
        }
    }
    $personListOffset += $personCount                                      #Offset øges for hver gruppe

    if ($created ) {                                                      #Forøg antal oprettede grupper (Bruges til meddelse til sidst)
        $groupsCreated++
    }
}

write-host "DONE`r`n$groupsCreated created!"                              #Fortæl hvor mange grupper der blev oprettet
Avatar billede Johnnie Novice
20. maj 2019 - 11:40 #3
😎mange Tak.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester