add-multipleusers.psm1

<#
.Synopsis
   Anlegen von AD Benutzern
.DESCRIPTION
   Dieses Script legt Benutzer in einer AD an, als Datenquelle dient eine CSV Datei mit folgenden Eintraegen
 
   Homedrive,Homedirectory,Path,Firstname,Lastname,Password
   "F:","\\MMBBS-DATA1\Home\IT-15","OU=FISI15Z,OU=IT-15,OU=IT,OU=Schüler,DC=mmbbs,DC=local","Jörg","Tuttas4","Tuttas1!!!"
 
.EXAMPLE
   Add-ADUsers -tablename users.csv
.EXAMPLE
   Add-ADUsers -tablename users.csv -computername 192.168.12.132
#>

function add-ADUsers
{
    Param
    (
        # Name (Pfad) der CSV-Datei
        [Parameter(Mandatory=$true,
                   Position=0)]
        $csv,

        # Name oder IP des AD Computers, um via Remote Powershell die Benutzer anzulegen
        $computer="127.0.0.1"
    )

    Begin
    {
        $add= {
            Param
            (
                # Hilfebeschreibung zu Param1
                [Parameter(Mandatory=$true,
                           ValueFromPipeline=$true,
                           Position=0)]
                $daten
        
            )
            Begin
            {
            }
            Process
            {
                foreach ($row in $daten) {
                    # Neuen Benutzer Anlegen
                    try {
                        $pw = ConvertTo-SecureString -AsPlainText $row.Password  -Force
                        New-ADUser -Name $row.Lastname -surname $row.Firstname -GivenName $row.Lastname -UserPrincipalName $row.Lastname -Enabled $true -AccountPassword $pw -Path $row.Path  -homedrive $row.HomeDrive -homedirectory $row.Homedirectory
                        Write-Host "Benutzer "($row.Lastname)" erfolgreich angelegt" -ForegroundColor Green
                    }
                    catch {
                        Write-Host "Benutzer "($row.Lastname)" konnte nicht angelegt werden:"$_.Exception.Message -ForegroundColor Red
                    }
                }
                
            }
            End
            {
            }
    
        }
    }
    Process
    {
        $d=Import-Csv $csv
        try {
            Invoke-Command -ComputerName $computer -Credential Administrator -ScriptBlock $add  -ArgumentList $d
        }
        catch {
            Write-Host "Kann ScriptBlock nicht auf Computer "$computer" ausführen" -ForegroundColor Red
        }
    }
    End
    {
    }
}

Export-ModuleMember -Function add-ADUsers