fonction UtilCrea {
    
    [string]$computerName = Read-Host "Nom du serveur"

    Invoke-Command -ComputerName $ComputerName -ScriptBlock {

        [string]$Nom = Read-Host "Nom"
        [string]$Prenom = Read-Host "Prénom"
        [string]$ou = Read-Host "Choix de l'OU"
        [string]$path = "OU=$OU,DC=LEARN,DC=LOCAL"
        [string]$pass = Read-Host -AsSecureString

        New-ADUser -Name "$Nom $Prenom" -GivenName "$Prenom" -Surname "$Nom" -SamAccountName "$Prenom.$Nom" -EmailAddress "$Prenom.$Nom@learn.local" -Path $path -AccountPassword $pass -Enable 1

    }

}

fonction GroupeCrea {
    
    [string]$computerName = Read-Host "Nom du serveur"

    Invoke-Command -ComputerName $ComputerName -ScriptBlock {

        [string]$nomGRP = Read-Host "Nom du groupe"
        [string]$SAN = Read-Host "SamAccountName"
        [string]$Cat = Read-Host "Catégorie"
        [string]$DPname = Read-Host "Nom affiché"
        [string]$Path = Read-Host "OU"
    
        New-ADGroup -Name $nomGRP -SamAccountName $SAN -GroupCategory $Cat -GroupScope Global -DisplayName $DPname -Path "OU=$path,CN=Users,DC=LEARN,DC=LOCAL"
    
    }


}

fonction OUCrea {
    
    [string]$computerName = Read-Host "Nom du serveur"

    Invoke-Command -ComputerName $ComputerName -ScriptBlock {
    
        [string]$name = Read-Host "Nom de l'OU"

        New-ADOrganizationalUnit -Name $name -Path "DC=LEARN,DC=LOCAL"
    
    }

}

fonction DisableUser {

    [string]$computerName = Read-Host "Nom du serveur"
    
    invoke-command -ComputerName $computerName -ScriptBlock {
    
        [string]$Uidentity = Read-Host "Nom de l'user"
        Set-ADAccountControl -Identity $Uidentity -Enabled 0

    }

}

fonction ModifUser {

    [string]$computerName = Read-Host "Nom du serveur"

    Invoke-Command -ComputerName $ComputerName -ScriptBlock {
        
        #crée un switch pour les deux fonctions
        
        [string]
        [string]$pass = Read-Host -AsSecureString
        [string]$path = "OU=$OU,DC=LEARN,DC=LOCAL"
        
        Set-ADUser -Identity -AccountPassword $pass

        Set-ADUser -Identity -Path $path

    }

}

fonction GetUserList {

    [string]$computerName = Read-Host "Nom du serveur"

    Invoke-Command -ComputerName $ComputerName -ScriptBlock {

        $choix = Read-Host -Prompt "Liste des utilisateurs d'une [1]OU ou d'un [2]Groupe"

        switch ($choix){
        
            "1" {

                    $ou = Read-Host "Ou"
                    Get-ADUser -Filter * -SearchBase "CN=$ou,DC=IT-CONNECT,DC=LOCAL"
                 
            }
            "2" {  

                    $groupe = Read-Host "Groupe"
                    Get-ADGroupMember -Identity $groupe | Format-Table Name, DistinguishedName
                    
            }
        
        }

    }

}

fonction GetUser {

    [string]$computerName = Read-Host "Nom du serveur"

    Invoke-Command -ComputerName $ComputerName -ScriptBlock {

        $user = Read-Host "User"
        Get-ADUser -Identity $user

    }
}

while ($true) {
    $choix = Read-Host -Prompt "Que voulez-vous faire ? [1]Crée un User [2]Crée un GRP [3]Créer une OU [4]Désactiver un User [5]Modifier un User [6]Obtenir une liste d'utilisateur [7]Information sur un USER [8]Exit"
    
    Switch ($choix) {
        "1" { UtilCrea }
        "2" { GroupeCrea }
        "3" { OUCrea }
        "4" { DisableUser }
        "5" { ModifUser }
        "6" { GetUserList }
        "7" { GetUser }
        "8" { exit }
        Default { Write-Host "Choix invalide. Veuillez réessayer." }
    }
}


