Question Script ajout d'utilisateur avec windows Form

Plus d'informations
il y a 7 ans 5 mois #27871 par gaudefroy
Merci 6ratgus pour ton aide. J'ai bien avancé sur mon script et j'ai rajouté quelques améliorations et fonctionnailtés à mon script. Je voulais avoir ton avis.
Notamment la possibilité une fonction permettant de générer un mot de passe aléatoire, une fonction qui me permet d'afficher des fenêtres avec messages d'erreur, la création d'un répertoire utilisateur et donner des droits à l'utilisateur sur ce répertoire.
Enfin voilà je voulais juste ton avis et savoir si dans le fond ou la forme mon script tiens la route.
J'ai rajouté une checkbox afin de gérer la création d'adresse mail.
En effet nous avons une messagerie office365 avec une synchronisation avec notre compte AD on premise.Par conséquent après la création du compte dans l'ad, il faut que je lance une full synchronisation avec ADSycn puis me connecter à exchange online puis rajouter le compte (vérifier au passage s'il existe déjà ?),affecter une licence, et appliquer le choix des langues. Enfin pas mal de boulot.
Et enfin gérer les erreurs ce que je ne maitrise pas trop.
Aussi je voulais savoir si l'on pouvait mettre un champs de texte qui permettrait d'afficher l'avancement des étapes de mon script en affichant par exemple:
-création du compte AD
-affectation des groupes
-creation du perso etc...

Je mets mon script ci dessous et merci encore pour ton aide:

[code:1]
[void] [System.Reflection.Assembly]::LoadWithPartialName(\"System.Drawing\"«»)

[void] [System.Reflection.Assembly]::LoadWithPartialName(\"System.Windows.Forms\"«»)



Import-Module ActiveDirectory



#formulaire principal

$Form = New-Object System.Windows.Forms.Form

$Form.Size = New-Object System.Drawing.Size(500,300)

$Form.Text = \"Ajout d'utilisateurs\"

# $form.Icon = [System.Drawing.Icon]::ExtractAssociatedIcon('\\srv-technique\Informatique\LPO_400x400.ico')

#
Type Labels

#Label Titre

$labeladduser = New-Object System.Windows.Forms.Label

$labeladduser.Location = New-Object System.Drawing.Size(200,10)

$labeladduser.Size = New-Object System.Drawing.Size(200,30)

$labeladduser.Text = \"Ajout d'utilisateurs\"

$labeladduser.Name = \"Ajout d'utilisateurs\"

$Form.Controls.Add($labeladduser)



#Label Prenom

$Labelprenom = New-Object System.Windows.Forms.Label

$Labelprenom.Location = New-Object System.Drawing.Size(10,52)

$Labelprenom.Size = New-Object System.Drawing.Size(80,20)

$Labelprenom.Text = \"Prenom\"

$Labelprenom.Name = \"Prenom\"

$Form.Controls.Add($Labelprenom)



#Label Nom

$Labelnom = New-Object System.Windows.Forms.Label

$Labelnom.Location = New-Object System.Drawing.Size(10,82)

$Labelnom.Size = New-Object System.Drawing.Size(80,20)

$Labelnom.Text = \"Nom\"

$Labelnom.Name = \"Nom\"

$Form.Controls.Add($Labelnom)



#Label Service

$Labelservice = New-Object System.Windows.Forms.Label

$Labelservice.Location = New-Object System.Drawing.Size(10,114)

$Labelservice.Size = New-Object System.Drawing.Size(80,20)

$Labelservice.Text = \"Service\"

$Labelservice.Name = \"Service\"

$Form.Controls.Add($Labelservice)



#Label mot de passe

$LabelPass = New-Object System.Windows.Forms.Label

$Labelpass.Location = New-Object System.Drawing.Size(10,144)

$Labelpass.Size = New-Object System.Drawing.Size(80,20)

$Labelpass.Text = \"Mot de Passe\"

$Labelpass.Name = \"Mot de Passe\"

$Form.Controls.Add($Labelpass)


#Label Type de contrat

$Labelcontrat = New-Object System.Windows.Forms.Label

$Labelcontrat.Location = New-Object System.Drawing.Size(10,174)

$Labelcontrat.Size = New-Object System.Drawing.Size(90,20)

$Labelcontrat.Text = \"Type de contrat\"

$Labelcontrat.Name = \"Type de contrat\"

$Form.Controls.Add($Labelcontrat)


#
CheckBox

# Checkbox pour valider ou non une personne ayant besoin d'une adresse mail

$CheckboxMail = New-Object System.Windows.Forms.Checkbox

$CheckboxMail.Location = New-Object System.Drawing.Size(100,204)

$CheckboxMail.Size = New-Object System.Drawing.Size(100,20)

$CheckboxMail.Text = \"Adresse email\"

$CheckboxMail.TabIndex = 4

$Form.Controls.Add($CheckboxMail)



#
Boutons

#Bouton quitter

$BTQuitter = New-Object System.Windows.Forms.Button

$BTQuitter.Location = New-Object System.Drawing.Size(400,235)

$BTQuitter.Size = New-Object System.Drawing.Size(75,23)

$BTQuitter.Text = \"Quitter\"

$BTQuitter.Name = \"Quitter\"

$BTQuitter.Add_Click({$Form.Close()})

$Form.Controls.Add($BTQuitter)


#Bouton de création u'ilisateur

$BTcreer = New-Object System.Windows.Forms.Button

$BTcreer.Location = New-Object System.Drawing.Size(320,235)

$BTcreer.Size = New-Object System.Drawing.Size(75,23)

$BTcreer.Text = \"Creer\"

$BTcreer.Name = \"Creer\"

$Form.Controls.Add($BTcreer)


#bouton générer mot de passe aléatoire

$BTgenerer = New-Object System.windows.Forms.Button

$BTgenerer.Location = New-Object System.Drawing.Size(320,140)

$BTgenerer.Size = New-Object System.Drawing.Size(75,23)

$BTgenerer.Text = \"Generer\"

$BTgenerer.Name = \"Generer\"

$Form.Controls.Add($BTgenerer)


#
Champs Texte


#Textfield prenom

$Textboxprenom = New-Object System.Windows.Forms.TextBox

$Textboxprenom.Location = New-Object System.Drawing.Size(100,50)

$Textboxprenom.Size = New-Object System.Drawing.Size(200,20)

$Form.Controls.Add($Textboxprenom)



#Textfield nom

$Textboxnom = New-Object System.Windows.Forms.TextBox

$Textboxnom.Location = New-Object System.Drawing.Size(100,80)

$Textboxnom.Size = New-Object System.Drawing.Size(200,20)

$Form.Controls.Add($Textboxnom)



#Textfield Mot de passe

$TextboxBa= New-Object System.Windows.Forms.TextBox

$TextboxBa.Location = New-Object System.Drawing.Size(100,140)

$TextboxBa.Size = New-Object System.Drawing.Size(200,20)

$Form.Controls.Add($TextboxBa)


#
Liste de choix

#Combobox service

$Comboboxservice = New-Object System.Windows.Forms.Combobox

$Comboboxservice.Location = New-Object System.Drawing.Size(100,110)

$Comboboxservice.Size = New-Object System.Drawing.Size(200,20)

$ComboBoxService.items.AddRange((\"Choix1\",\"Choix2\",\"Choix3\"«»))

$Form.Controls.Add($Comboboxservice)


#Combobox Contrat

$Comboboxcontrat = New-Object System.Windows.Forms.Combobox

$Comboboxcontrat.Location = New-Object System.Drawing.Size(100,170)

$Comboboxcontrat.Size = New-Object System.Drawing.Size(200,20)

$Comboboxcontrat.items.AddRange((\"CDI\",\"CDD\",\"SCV\"«»))

$Form.Controls.Add($Comboboxcontrat)


#
Fonctions
$BTgenerer.add_click({

function Generate-password
{

param
(
$length = $length
)


$UpperCase = [char[]]\"ABCEFGHJKLMNPQRSTUVWXYZ\"
$LowerCase = [char[]]\"abcdefghijkmnopqrstuvwxyz\"
$Numbers = [char[]]\"123456789\"
$SpecialCaracteres = [char[]]\"!@#$%&*:;()-_=+[]{}<>\/?\"

$TotalUsed = 0

while ($TotalUsed -lt $length)
{

if ($TotalUsed -lt $length)
{
$password = $password +( Get-Random $UpperCase -Count 1)
$TotalUsed ++
}

if ($TotalUsed -lt $length)
{
$password = $password + (Get-Random $LowerCase -Count 1)
$TotalUsed ++
}
if ($TotalUsed -lt $length)
{
$password = $password + (Get-Random $Numbers -Count 1)
$TotalUsed ++
}
if ($TotalUsed -lt $length)
{
$Password = $password + (Get-Random $SpecialCaracteres -Count 1)
$TotalUsed ++
}
}

$MixPassword = Get-Random $password -Count $length

return $MixPassword -join \"\"
}

$RandomPassword = Generate-password 8

$TextboxBa.Text = $RandomPassword

})



$BTcreer.Add_Click({

# recupération des valeurs des champs textbox

$addv = $Textboxprenom.Text
$addn = $Textboxnom.Text
$addVa = $Comboboxservice.Text
$addBa = $TextboxBa.Text

# Fonction creation fenetre

function Show-Message {

param (
[string]$Message = \"Veuillez entrer votre message\",
[string]$Titre = \"Titre de la fenêtre\",
[switch]$OKCancel,
[switch]$AbortRetryIgnore,
[switch]$YesNoCancel,
[switch]$YesNo,
[switch]$RetryCancel,
[switch]$IconErreur,
[switch]$IconQuestion,
[switch]$IconAvertissement,
[switch]$IconInformation
)

# Affecter la valeur selon le type de boutons choisis
if ($OKCancel) { $Btn = 1 }
elseif ($AbortRetryIgnore) { $Btn = 2 }
elseif ($YesNoCancel) { $Btn = 3 }
elseif ($YesNo) { $Btn = 4 }
elseif ($RetryCancel) { $Btn = 5 }
else { $Btn = 0 }

# Affecter la valeur pour l'icone
if ($IconErreur) {$Icon = 16 }
elseif ($IconQuestion) {$Icon = 32 }
elseif ($IconAvertissement) {$Icon = 48 }
elseif ($IconInformation) {$Icon = 64 }
else {$Icon = 0 }


# Charger la biblithèque d'objets graphiques Windows.Forms
[System.Reflection.Assembly]::LoadWithPartialName(\"System.Windows.Forms\"«») | Out-Null

# Afficher la boite de dialogue et renvoyer la valeur de retour (bouton appuyé)
$Reponse = [System.Windows.Forms.MessageBox]::«»Show($Message, $Titre , $Btn, $Icon)
Return $Reponse
}


#creation des variables générales

$DisplayName = (Get-Culture).textinfo.totitlecase(\"$addv\" + \" \" + \"$addn\"«»)

$GivenName = (Get-Culture).textinfo.totitlecase($addv)

$SamAccountName = \"$addv\" + \".\" + \"$addn\"

$SamAccountNameMin = $SamAccountName.ToLower()

$Surname = $addn

$Name = (Get-Culture).textinfo.totitlecase(\"$addv\" + \" \" + \"$addn\"«»)

$UserPrincipalName = \"$addv\" + \".\" + \"$addn\" + \"@domaine\"

$UserPrincipalNameMin = $UserPrincipalName.ToLower()

$EmailAddress = \"$addv\" + \".\" + \"$addn\" + \"@domaine\"

$EmailAddressMin = $EmailAddress.ToLower()

$Password = $addBa

#creation des variables suivant l'appartenance aux services

if ($addVa -eq \"choix1\"«») {

$Department = \"department1\"

$Description = \"description1\"

$Company = \"company1\"

$Office = \"office1\"

$Path = \"OU 1\"

$DataPath = \"Chemin des données utilisateurs\"

$groupsAD = @(\"groupe 1\",\"groupe2\"«»)
}

if ($addVa -eq \"choix2\"«») {

$Department = \"department2\"

$Description = \"description 2\"

$Company = \"company 2\"

$Office = \"office 2\"

$Path = \"OU 2\"

$DataPath = \"Chemin des données utilisateurs\"

$groupsAD = @(\"groupe 1\",\"groupe2\"«»)
}

if ($addVa -eq \"choix3\"«») {

$Department = \"department 3\"

$Description = \"description 3\"

$Company = \"company 3\"

$Office = \"office 3\"

$Path = \"OU 3\"

$DataPath = \"Chemin des données utilisateurs\"

$groupsAD = @(\"groupe 1\",\"groupe2\"«»)
}

#Add User

#Verfie si le compte existe deja dans l'AD

if (Get-ADUser -F {SamAccountName -eq $SamAccountName})

{

#Si l'utilisateur existe, afficher le message

Show-Message -Message \"Ce compte utilisateur $SamAccountName existe déjà dans l'active directory.\" -Titre \"Erreur\" -OKCancel -IconErreur

}

else

{

#Si l'utilisateur n'existe pas, le créer



New-ADUser -DisplayName $DisplayName -GivenName $GivenName -SamAccountName $SamAccountNameMin -Surname $Surname -Name $Name -UserPrincipalName $UserPrincipalNameMin -Department $Department -Description $Description -EmailAddress $EmailAddressMin -Path $Path -AccountPassword (ConvertTo-SecureString $password -AsPlainText -Force) -Company $Company -Office $Office -CannotChangePassword $false -Enabled $true

# Affiche le résultat pour chaque utilisateur

Show-Message -Message \"l'utilisateur $GivenName $Surname a été créé dans $Department\" -Titre \"Rapport de création\" -OKCancel -IconInformation

}


# affectation des groupes de distribution et securité

$Groups = $groupsAD

ForEach ($group in $groups) {

Add-ADGroupMember -Identity $group -Members $SamAccountNameMin

}

# Création du repertoire personnel

$DataUserPath = \"$DataPath\$SamAccountNameMin\"

If(!(test-path $DataUserPath))

{
New-Item -ItemType Directory -Force -Path $DataUserPath



Import-Module NTFSSecurity



Add-NTFSAccess –Path \"$DataUserPath\" –Account \"$UserPrincipalNameMin\" –AccessRights Modify

}

else {

Show-Message -Message \"Le dossier $SamAccountNameMin existe déjà\" -Titre \"Erreur\" -AbortRetryIgnore -IconErreur

}


# reinitialisation des champs de saisie

$Textboxprenom.Clear()
$Textboxnom.Clear()
$Comboboxservice.Items.Clear()
$TextboxBa.Clear()
$Comboboxcontrat.items.Clear()
$CheckboxMail.Checked = $false


})

[void] $Form.ShowDialog()
[/code:1]

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 7 ans 5 mois #27875 par gaudefroy
Petite question: dans mon script j'essaie de tester ma checkbox pour savoir si elle est coché ou non et en conséquence faire des actions mais cela ne semble pas fonctionner voir méthode ci dessous:

[code:1]
if ($CheckboxMail.Checked = $true) {

action à réaliser \"créer une boite aux lettre dans office 365

}

else {

# ajouter la valeur \"nosync\" à extensionAttribute15 (filtre ADsync)

Set-ADUser -Identity \"$SamAccountNameMin\" -Add @{extensionAttribute15 = \"Nosync\"}

}

[/code:1]

J'ai l'impression que lorsque j’exécute cette méthode sur sur cette check box cela me coche la case. J'ai essayé aussi checkstate mais la il me sort une erreur.
As tu une idée de la bonne methode pour tester que la checkbox est coché ou non ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 7 ans 5 mois #27876 par Sinjk
Hello,

Actuellement ta méthode vérifie juste si la checkbox est cochée et rien d'autre.

Pour activer un évènement lorsque celle ci est cochée, tu devrais te tourner vers la fonction \"Add_Click\"

[code:1]
$checkbox.Add_Click({
action à réaliser \"créer une boite aux lettre dans office 365
})

[/code:1]

Bon courage :)

Sinjk

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 7 ans 5 mois #27877 par gaudefroy
Merci Sinjk pour ton aide mais je ne comprends pas ta réponse.

Je ne veux pas que lorsque je clic sur le checkbox il se passe une action (si j'ai bien compris la fonction checkbox.add_click).
En fait je veux juste pendant mon script vérifier l’état \"coché\" ou \"non\" et ensuite en déduire une action ou une autre.
En gros si la case est cochée il faut qu'il créer l'utilisateur dans office 365 suivant un script, sinon il rajoute attribut 15 lavaleur \"nosync\" sur l'utilisateur ce qui bloque la synchro de l'utilisateur.

Peut être que je ne comprends pas la méthode pour utiliser la checkbox. peux tu m'en dire un peu plus ?

Merci d'avance

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 7 ans 5 mois #27878 par Sinjk
Je t'avoue que je n'ai pas regardé ton script dans son intégralité désolé. Ma question: est-ce que ton check est activé lors du click d'un bouton ?

De plus, dans ta partie de code suivante:
[code:1]
if ($CheckboxMail.Checked = $true)

[/code:1]

Il faut remplacer le \"=\" par \"-eq\" car la première n'est pas \"prise en compte\"

Dans ce cas si tu fais un essai comme

[code:1]
$Button.Add_Click({


if ($Checkbox.Checked -eq $true) {

Write-Host \"la checkbox est cochée\"

}

else {


Write-Host \"la checkbox est pas cochée\"

}

})

[/code:1]

La vérification s'effectuera lorsque tu cliqueras sur le bouton.

Je ne sais pas si j'ai été assez clair et si c'est ce que tu recherchais ^^.

Bon courage !

SinJK

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 7 ans 5 mois #27879 par gaudefroy
Oui désolé en effet j'ai fait une erreur en recopiant mon code. J'ai bien mis:

[code:1]
if ($ComboboxMailresult -eq true) {

write-host \"la reponse est oui\"

}

else {

write-host \"la reponse est non\"
}
[/code:1]
bizarrement je ne vois aucun texte apparaitre lors du script. Comme il n’interprétait pas ce que je lui demande. J'ai essayé de créer une combobox en mettant le choix oui ou non et c'est pareil n’interprète pas ce que je lui demande. Peut etre ai je mal placé mon code. Je rentre l’entièreté de mon code pour voir si quelqu'un trouve une anomalie.

[code:1]
[void] [System.Reflection.Assembly]::LoadWithPartialName(\"System.Drawing\"«»)

[void] [System.Reflection.Assembly]::LoadWithPartialName(\"System.Windows.Forms\"«»)



Import-Module ActiveDirectory



#formulaire principal

$Form = New-Object System.Windows.Forms.Form

$Form.Size = New-Object System.Drawing.Size(500,300)

$Form.Text = \"Ajout d'utilisateurs\"

# $form.Icon = [System.Drawing.Icon]::ExtractAssociatedIcon('\\srv-technique\Informatique\LPO_400x400.ico')

#
Type Labels

#Label Titre

$labeladduser = New-Object System.Windows.Forms.Label

$labeladduser.Location = New-Object System.Drawing.Size(200,10)

$labeladduser.Size = New-Object System.Drawing.Size(200,30)

$labeladduser.Text = \"Ajout d'utilisateurs\"

$labeladduser.Name = \"Ajout d'utilisateurs\"

$Form.Controls.Add($labeladduser)



#Label Prenom

$Labelprenom = New-Object System.Windows.Forms.Label

$Labelprenom.Location = New-Object System.Drawing.Size(10,52)

$Labelprenom.Size = New-Object System.Drawing.Size(80,20)

$Labelprenom.Text = \"Prenom\"

$Labelprenom.Name = \"Prenom\"

$Form.Controls.Add($Labelprenom)



#Label Nom

$Labelnom = New-Object System.Windows.Forms.Label

$Labelnom.Location = New-Object System.Drawing.Size(10,82)

$Labelnom.Size = New-Object System.Drawing.Size(80,20)

$Labelnom.Text = \"Nom\"

$Labelnom.Name = \"Nom\"

$Form.Controls.Add($Labelnom)



#Label Service

$Labelservice = New-Object System.Windows.Forms.Label

$Labelservice.Location = New-Object System.Drawing.Size(10,114)

$Labelservice.Size = New-Object System.Drawing.Size(80,20)

$Labelservice.Text = \"Service\"

$Labelservice.Name = \"Service\"

$Form.Controls.Add($Labelservice)



#Label mot de passe

$LabelPass = New-Object System.Windows.Forms.Label

$Labelpass.Location = New-Object System.Drawing.Size(10,144)

$Labelpass.Size = New-Object System.Drawing.Size(80,20)

$Labelpass.Text = \"Mot de Passe\"

$Labelpass.Name = \"Mot de Passe\"

$Form.Controls.Add($Labelpass)


#Label Type de contrat

$Labelcontrat = New-Object System.Windows.Forms.Label

$Labelcontrat.Location = New-Object System.Drawing.Size(10,174)

$Labelcontrat.Size = New-Object System.Drawing.Size(90,20)

$Labelcontrat.Text = \"Type de contrat\"

$Labelcontrat.Name = \"Type de contrat\"

$Form.Controls.Add($Labelcontrat)


#
Boutons

#Bouton quitter

$BTQuitter = New-Object System.Windows.Forms.Button

$BTQuitter.Location = New-Object System.Drawing.Size(400,235)

$BTQuitter.Size = New-Object System.Drawing.Size(75,23)

$BTQuitter.Text = \"Quitter\"

$BTQuitter.Name = \"Quitter\"

$BTQuitter.Add_Click({$Form.Close()})

$Form.Controls.Add($BTQuitter)


#Bouton de création u'ilisateur

$BTcreer = New-Object System.Windows.Forms.Button

$BTcreer.Location = New-Object System.Drawing.Size(320,235)

$BTcreer.Size = New-Object System.Drawing.Size(75,23)

$BTcreer.Text = \"Creer\"

$BTcreer.Name = \"Creer\"

$Form.Controls.Add($BTcreer)


#bouton générer mot de passe aléatoire

$BTgenerer = New-Object System.windows.Forms.Button

$BTgenerer.Location = New-Object System.Drawing.Size(320,140)

$BTgenerer.Size = New-Object System.Drawing.Size(75,23)

$BTgenerer.Text = \"Generer\"

$BTgenerer.Name = \"Generer\"

$Form.Controls.Add($BTgenerer)


#
Champs Texte


#Textfield prenom

$Textboxprenom = New-Object System.Windows.Forms.TextBox

$Textboxprenom.Location = New-Object System.Drawing.Size(100,50)

$Textboxprenom.Size = New-Object System.Drawing.Size(200,20)

$Form.Controls.Add($Textboxprenom)



#Textfield nom

$Textboxnom = New-Object System.Windows.Forms.TextBox

$Textboxnom.Location = New-Object System.Drawing.Size(100,80)

$Textboxnom.Size = New-Object System.Drawing.Size(200,20)

$Form.Controls.Add($Textboxnom)



#Textfield Mot de passe

$TextboxBa= New-Object System.Windows.Forms.TextBox

$TextboxBa.Location = New-Object System.Drawing.Size(100,140)

$TextboxBa.Size = New-Object System.Drawing.Size(200,20)

$Form.Controls.Add($TextboxBa)


#
Liste de choix

#Combobox service

$Comboboxservice = New-Object System.Windows.Forms.Combobox

$Comboboxservice.Location = New-Object System.Drawing.Size(100,110)

$Comboboxservice.Size = New-Object System.Drawing.Size(200,20)

$ComboBoxService.items.AddRange((\"Choix1\",\"Choix2\",\"Choix3\"«»))

$Form.Controls.Add($Comboboxservice)


#Combobox Contrat

$Comboboxcontrat = New-Object System.Windows.Forms.Combobox

$Comboboxcontrat.Location = New-Object System.Drawing.Size(100,170)

$Comboboxcontrat.Size = New-Object System.Drawing.Size(200,20)

$Comboboxcontrat.items.AddRange((\"CDI\",\"CDD\",\"SCV\"«»))

$Form.Controls.Add($Comboboxcontrat)

# Combobox pour valider ou non une personne ayant besoin d'une adresse mail

$ComboboxMail = New-Object System.Windows.Forms.Combobox

$ComboboxMail.Location = New-Object System.Drawing.Size(100,204)

$ComboboxMail.Size = New-Object System.Drawing.Size(100,20)

$ComboBoxMail.items.AddRange((\"Oui\",\"Non\"«»))

$Form.Controls.Add($ComboboxMail)

#
Fonctions
$BTgenerer.add_click({

function Generate-password
{

param
(
$length = $length
)


$UpperCase = [char[]]\"ABCEFGHJKLMNPQRSTUVWXYZ\"
$LowerCase = [char[]]\"abcdefghijkmnopqrstuvwxyz\"
$Numbers = [char[]]\"123456789\"
$SpecialCaracteres = [char[]]\"!@#$%&*:;()-_=+[]{}<>\/?\"

$TotalUsed = 0

while ($TotalUsed -lt $length)
{

if ($TotalUsed -lt $length)
{
$password = $password +( Get-Random $UpperCase -Count 1)
$TotalUsed ++
}

if ($TotalUsed -lt $length)
{
$password = $password + (Get-Random $LowerCase -Count 1)
$TotalUsed ++
}
if ($TotalUsed -lt $length)
{
$password = $password + (Get-Random $Numbers -Count 1)
$TotalUsed ++
}
if ($TotalUsed -lt $length)
{
$Password = $password + (Get-Random $SpecialCaracteres -Count 1)
$TotalUsed ++
}
}

$MixPassword = Get-Random $password -Count $length

return $MixPassword -join \"\"
}

$RandomPassword = Generate-password 8

$TextboxBa.Text = $RandomPassword

})



$BTcreer.Add_Click({

# recupération des valeurs des champs textbox

$addv = $Textboxprenom.Text
$addn = $Textboxnom.Text
$addVa = $Comboboxservice.Text
$addBa = $TextboxBa.Text
$ComboboxMailresult= $ComboboxMail.Text

# Fonction creation fenetre

function Show-Message {

param (
[string]$Message = \"Veuillez entrer votre message\",
[string]$Titre = \"Titre de la fenêtre\",
[switch]$OKCancel,
[switch]$AbortRetryIgnore,
[switch]$YesNoCancel,
[switch]$YesNo,
[switch]$RetryCancel,
[switch]$IconErreur,
[switch]$IconQuestion,
[switch]$IconAvertissement,
[switch]$IconInformation
)

# Affecter la valeur selon le type de boutons choisis
if ($OKCancel) { $Btn = 1 }
elseif ($AbortRetryIgnore) { $Btn = 2 }
elseif ($YesNoCancel) { $Btn = 3 }
elseif ($YesNo) { $Btn = 4 }
elseif ($RetryCancel) { $Btn = 5 }
else { $Btn = 0 }

# Affecter la valeur pour l'icone
if ($IconErreur) {$Icon = 16 }
elseif ($IconQuestion) {$Icon = 32 }
elseif ($IconAvertissement) {$Icon = 48 }
elseif ($IconInformation) {$Icon = 64 }
else {$Icon = 0 }


# Charger la biblithèque d'objets graphiques Windows.Forms
[System.Reflection.Assembly]::LoadWithPartialName(\"System.Windows.Forms\"«») | Out-Null

# Afficher la boite de dialogue et renvoyer la valeur de retour (bouton appuyé)
$Reponse = [System.Windows.Forms.MessageBox]::«»Show($Message, $Titre , $Btn, $Icon)
Return $Reponse
}


#creation des variables générales

$DisplayName = (Get-Culture).textinfo.totitlecase(\"$addv\" + \" \" + \"$addn\"«»)

$GivenName = (Get-Culture).textinfo.totitlecase($addv)

$SamAccountName = \"$addv\" + \".\" + \"$addn\"

$SamAccountNameMin = $SamAccountName.ToLower()

$Surname = $addn

$Name = (Get-Culture).textinfo.totitlecase(\"$addv\" + \" \" + \"$addn\"«»)

$UserPrincipalName = \"$addv\" + \".\" + \"$addn\" + \"@domaine\"

$UserPrincipalNameMin = $UserPrincipalName.ToLower()

$EmailAddress = \"$addv\" + \".\" + \"$addn\" + \"@domaine\"

$EmailAddressMin = $EmailAddress.ToLower()

$Password = $addBa

#creation des variables suivant l'appartenance aux services

if ($addVa -eq \"choix1\"«») {

$Department = \"department1\"

$Description = \"description1\"

$Company = \"company1\"

$Office = \"office1\"

$Path = \"OU 1\"

$DataPath = \"Chemin des données utilisateurs\"

$groupsAD = @(\"groupe 1\",\"groupe2\"«»)
}

if ($addVa -eq \"choix2\"«») {

$Department = \"department2\"

$Description = \"description 2\"

$Company = \"company 2\"

$Office = \"office 2\"

$Path = \"OU 2\"

$DataPath = \"Chemin des données utilisateurs\"

$groupsAD = @(\"groupe 1\",\"groupe2\"«»)
}

if ($addVa -eq \"choix3\"«») {

$Department = \"department 3\"

$Description = \"description 3\"

$Company = \"company 3\"

$Office = \"office 3\"

$Path = \"OU 3\"

$DataPath = \"Chemin des données utilisateurs\"

$groupsAD = @(\"groupe 1\",\"groupe2\"«»)
}

#Add User

#Verfie si le compte existe deja dans l'AD

if (Get-ADUser -F {SamAccountName -eq $SamAccountName})

{

#Si l'utilisateur existe, afficher le message

Show-Message -Message \"Ce compte utilisateur $SamAccountName existe déjà dans l'active directory.\" -Titre \"Erreur\" -OKCancel -IconErreur

}

else

{

#Si l'utilisateur n'existe pas, le créer



New-ADUser -DisplayName $DisplayName -GivenName $GivenName -SamAccountName $SamAccountNameMin -Surname $Surname -Name $Name -UserPrincipalName $UserPrincipalNameMin -Department $Department -Description $Description -EmailAddress $EmailAddressMin -Path $Path -AccountPassword (ConvertTo-SecureString $password -AsPlainText -Force) -Company $Company -Office $Office -CannotChangePassword $false -Enabled $true

# Affiche le résultat pour chaque utilisateur

Show-Message -Message \"l'utilisateur $GivenName $Surname a été créé dans $Department\" -Titre \"Rapport de création\" -OKCancel -IconInformation

}


# affectation des groupes de distribution et securité

$Groups = $groupsAD

ForEach ($group in $groups) {

Add-ADGroupMember -Identity $group -Members $SamAccountNameMin

}

# Création du repertoire personnel

$DataUserPath = \"$DataPath\$SamAccountNameMin\"

If(!(test-path $DataUserPath))

{
New-Item -ItemType Directory -Force -Path $DataUserPath



Import-Module NTFSSecurity



Add-NTFSAccess –Path \"$DataUserPath\" –Account \"$UserPrincipalNameMin\" –AccessRights Modify

}

else {

Show-Message -Message \"Le dossier $SamAccountNameMin existe déjà\" -Titre \"Erreur\" -AbortRetryIgnore -IconErreur

}


if ($ComboboxMailresult -eq \"Oui\"«») {

write-host \"le resultat est oui\"

#lancement de la synchronisation avec azure AD

#Start-ADSyncSyncCycle -PolicyType delta

# temporisation durant la synchro ?


#connexion à exchange online

#$usercredential = get-credential

#connect‑msolservice –credential $credential

#$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection
#Import-PSSession $Session -DisableNameChecking

# verification qu'il n'y pas d'utilisateur portant le meme nom et prenom

#$mailboxexist = get-mailbox -identity \"$UserPrincipalNameMin\"

#if ($mailboxexist -eq $null) {



#else {

#Show-Message -Message \"L'adresse mail $UserPrincipalNameMin existe déjà, voulez vous continuer ?\" -Titre \"Erreur\" -YesNo -IconErreur

#}

else {

write-host \"le resultat est Non\"

Set-ADUser -Identity \"$SamAccountNameMin\" -Add @{extensionAttribute15 = \"Nosync\"}

}

# reinitialisation des champs de saisie

$Textboxprenom.Clear()
$Textboxnom.Clear()
$Comboboxservice.Items.Clear()
$TextboxBa.Clear()
$Comboboxcontrat.items.Clear()

})

[void] $Form.ShowDialog()
[/code:1]

Si je choisis \"non\" dans la combobox mail je devrais avoir un texte qui apparait avec en disant que le choix est non mais je n'ai rien au prompt
par contre les champs sont bien reinitialisé a la fin de mon script

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.052 secondes
Propulsé par Kunena