ZufallsGenerator.psm1

$script:vornamenGeschlechter = @( 
        @{Vorname="Anita"; Geschlecht="Weiblich"}, 
        @{Vorname="Maria"; Geschlecht="Weiblich"}, 
        @{Vorname="Anna"; Geschlecht="Weiblich"}, 
        @{Vorname="Ursula"; Geschlecht="Weiblich"}, 
        @{Vorname="Ruth"; Geschlecht="Weiblich"}, 
        @{Vorname="Elisabeth"; Geschlecht="Weiblich"}, 
        @{Vorname="Sandra"; Geschlecht="Weiblich"}, 
        @{Vorname="Monika"; Geschlecht="Weiblich"}, 
        @{Vorname="Claudia"; Geschlecht="Weiblich"}, 
        @{Vorname="Verena"; Geschlecht="Weiblich"}, 
        @{Vorname="Nicole"; Geschlecht="Weiblich"}, 
        @{Vorname="Anne"; Geschlecht="Weiblich"}, 
        @{Vorname="Barbara"; Geschlecht="Weiblich"}, 
        @{Vorname="Silvia"; Geschlecht="Weiblich"}, 
        @{Vorname="Andrea"; Geschlecht="Weiblich"}, 
        @{Vorname="Michaela"; Geschlecht="Weiblich"}, 
        @{Vorname="Heike"; Geschlecht="Weiblich"}, 
        @{Vorname="Susanne"; Geschlecht="Weiblich"}, 
        @{Vorname="Melanie"; Geschlecht="Weiblich"}, 
        @{Vorname="Marie"; Geschlecht="Weiblich"}, 
        @{Vorname="Daniela"; Geschlecht="Weiblich"}, 
        @{Vorname="Christine"; Geschlecht="Weiblich"}, 
        @{Vorname="Karin"; Geschlecht="Weiblich"}, 
        @{Vorname="Marianne"; Geschlecht="Weiblich"}, 
        @{Vorname="Erika"; Geschlecht="Weiblich"}, 
        @{Vorname="Margrit"; Geschlecht="Weiblich"}, 
        @{Vorname="Daniel"; Geschlecht="Maennlich"}, 
        @{Vorname="Peter"; Geschlecht="Maennlich"}, 
        @{Vorname="Andreas"; Geschlecht="Maennlich"}, 
        @{Vorname="Michael"; Geschlecht="Maennlich"}, 
        @{Vorname="Marco"; Geschlecht="Maennlich"}, 
        @{Vorname="Markus"; Geschlecht="Maennlich"}, 
        @{Vorname="Martin"; Geschlecht="Maennlich"}, 
        @{Vorname="Patrick"; Geschlecht="Maennlich"}, 
        @{Vorname="David"; Geschlecht="Maennlich"}, 
        @{Vorname="Walter"; Geschlecht="Maennlich"}, 
        @{Vorname="Bruno"; Geschlecht="Maennlich"}, 
        @{Vorname="Urs"; Geschlecht="Maennlich"}, 
        @{Vorname="René"; Geschlecht="Maennlich"}, 
        @{Vorname="Marcel"; Geschlecht="Maennlich"}, 
        @{Vorname="Roland"; Geschlecht="Maennlich"}, 
        @{Vorname="Werner"; Geschlecht="Maennlich"}, 
        @{Vorname="Herbert"; Geschlecht="Maennlich"}, 
        @{Vorname="Stefan"; Geschlecht="Maennlich"}, 
        @{Vorname="Leonardo"; Geschlecht="Maennlich"}, 
        @{Vorname="Hans"; Geschlecht="Maennlich"}, 
        @{Vorname="Christian"; Geschlecht="Maennlich"}, 
        @{Vorname="Thomas"; Geschlecht="Maennlich"}
    )
$script:nachnamen = @("Müller", "Meier", "Schmid", "Keller", "Weber", "Huber", "Schneider", "Meyer", "Steiner", "Fischer", 
    "Gerber", "Brunner", "Baumann", "Frei", "Zimmermann", "Moser", "Widmer", "Wyss", "Graf", "Roth",
    "Aebischer", "Rochat", "Jeanneret", "Favre", "Aubry", "Kälin", "Bernasconi", "Hefti", "Werlen")
$script:korrespondenzsprachen = @("de", "fr", "it", "en")

$script:strassen = @("Alpenstrasse", "Jungfrauweg", "Gartenweg", "Fabrikstrasse", "Uferweg", "Distelweg", "Laupenstrasse", "Seestrasse", "Bernstrasse", "Finkenweg", "Bahnhofstrasse", "Europaplatz", "Chemin de la Forêt", "Avenue de Tivoli", "Rue des Banques", "Zentralplatz", "Via Henri Guisan")
$script:plzOrte = @(
    @{ Plz = 1001; Ort = "Lausanne" },
    @{ Plz = 1024; Ort = "Ecublens VD" },
    @{ Plz = 1110; Ort = "Morges" },
    @{ Plz = 1180; Ort = "Rolle" },
    @{ Plz = 1207; Ort = "Genève" },
    @{ Plz = 1260; Ort = "Nyon" },
    @{ Plz = 1700; Ort = "Fribourg" },
    @{ Plz = 2000; Ort = "Neuchâtel" },
    @{ Plz = 2300; Ort = "La Chaux-de-Fonds" },
    @{ Plz = 2500; Ort = "Biel/Bienne" },
    @{ Plz = 2814; Ort = "Roggenburg" },
    @{ Plz = 3012; Ort = "Bern" },
    @{ Plz = 3123; Ort = "Belp" },
    @{ Plz = 3254; Ort = "Messen" },
    @{ Plz = 3400; Ort = "Burgdorf" },
    @{ Plz = 3619; Ort = "Eriz" },
    @{ Plz = 3825; Ort = "Mürren" },
    @{ Plz = 3930; Ort = "Visp" },
    @{ Plz = 4001; Ort = "Basel" },
    @{ Plz = 4247; Ort = "Grindel" },
    @{ Plz = 4494; Ort = "Oltingen" },
    @{ Plz = 4663; Ort = "Aarburg" },
    @{ Plz = 5246; Ort = "Scherz" },
    @{ Plz = 5727; Ort = "Oberkulm" },
    @{ Plz = 6003; Ort = "Luzern" },
    @{ Plz = 6210; Ort = "Sursee" },
    @{ Plz = 6390; Ort = "Engelberg" },
    @{ Plz = 6500; Ort = "Bellinzona" },
    @{ Plz = 6656; Ort = "Golino" },
    @{ Plz = 7050; Ort = "Arosa" },
    @{ Plz = 7233; Ort = "Jenaz" },
    @{ Plz = 7535; Ort = "Valchava" },
    @{ Plz = 8004; Ort = "Zürich" },
    @{ Plz = 8192; Ort = "Zweidlen" },
    @{ Plz = 8409; Ort = "Winterthur" },
    @{ Plz = 8554; Ort = "Bonau" },
    @{ Plz = 8645; Ort = "Jona" },
    @{ Plz = 8866; Ort = "Ziegelbrücke" },
    @{ Plz = 9050; Ort = "Appenzell" },
    @{ Plz = 9410; Ort = "Heiden" },
    @{ Plz = 9612; Ort = "Dreien" },
    @{ Plz = 9658; Ort = "Wildhaus" }
)



function New-RandomPerson {
    param (
        [Parameter(HelpMessage = "Anzahl zu erstellende Personen")]
        $Anzahl,
        [Parameter(HelpMessage = "Sicherheitsgrupe, in der die Person angelegt werden soll")]
        $Sicherheitsgruppe,
        [Parameter(HelpMessage = "E-Mail-Adresse, welche den Personen zugewiesen werden soll")]
        $EmailAdresse
    )
    process {
        if ($Anzahl -lt 1) {
            $Anzahl = 1
        }
        if (-not $Sicherheitsgruppe) {
            $Sicherheitsgruppe = "WEEDU_SCHULUNG"
        }
        if (-not $EmailAdresse) {
            $EmailAdresse = "weiterleitung.test-weedu@didacware.ch"
        }
        $LocalRandomRunKey = Get-Random -Minimum 1000000000 -Maximum 1999999999

        $erstelltePersonen = @()

        for ($personNr = 1; $personNr -le $Anzahl; $personNr++) {
            $personUid = "!RandomSchulung!$RandomRunKey-$LocalRandomRunKey!Person$personNr"
            $vornameGeschlecht = Get-Random $vornamenGeschlechter
            $name = Get-Random $nachnamen
            $plzOrt = Get-Random $plzOrte

            $kommMittel = @(
                (New-PostAdresse-Object -Kategorie Privat -Land CH -Strasse (Get-Random $strassen) -Hausnummer (Get-Random -Minimum 1 -Maximum 130) -PLZ $plzOrt.Plz -Ort $plzOrt.Ort),
                (New-Kommunikationsmittel-Object -Kategorie Privat -Type "EMailAdresse" -Adresse $EmailAdresse)
            )
            $newPersonResult = New-Einzelperson -PersonUid $personUid -Geschlecht $vornameGeschlecht.Geschlecht -Vorname $vornameGeschlecht.Vorname -Name $name -Korrespondenzsprache (Get-Random $korrespondenzsprachen) -KommunikationsmittelListe $kommMittel -SicherheitsEinstellung (New-Sicherheitseinstellung-Object $Sicherheitsgruppe)

            $bezeichnung = "$($vornameGeschlecht.Vorname) $name aus $($plzOrt.Ort)";
            $erstelltePersonen += [PSCustomObject]@{
                Bezeichnung = $bezeichnung;
                Link = "<a href=""https://schulung-de.weedu.ch/person/person/Detail/$personUid"">$bezeichnung</a>"
                Vorname = $vornameGeschlecht.Vorname;
                Name = $name;
                Ort = $plzOrt.Ort;
                Uid = ConvertTo-WeeduGuid $personUid
            }
        }
        return $erstelltePersonen
    }
}

Export-ModuleMember -function New-RandomPerson