Question
Script ajout d'utilisateur avec windows Form
- gaudefroy
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 32
- Remerciements reçus 0
il y a 7 ans 5 mois #27871
par gaudefroy
Réponse de gaudefroy sur le sujet Re:Script ajout d'utilisateur avec windows Form
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]
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.
- gaudefroy
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 32
- Remerciements reçus 0
il y a 7 ans 5 mois #27875
par gaudefroy
Réponse de gaudefroy sur le sujet Re:Script ajout d'utilisateur avec windows Form
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 ?
[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.
- Sinjk
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 99
- Remerciements reçus 0
il y a 7 ans 5 mois #27876
par Sinjk
Réponse de Sinjk sur le sujet Re:Script ajout d'utilisateur avec windows Form
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
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.
- gaudefroy
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 32
- Remerciements reçus 0
il y a 7 ans 5 mois #27877
par gaudefroy
Réponse de gaudefroy sur le sujet Re:Script ajout d'utilisateur avec windows Form
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
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.
- Sinjk
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 99
- Remerciements reçus 0
il y a 7 ans 5 mois #27878
par Sinjk
Réponse de Sinjk sur le sujet Re:Script ajout d'utilisateur avec windows Form
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
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.
- gaudefroy
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 32
- Remerciements reçus 0
il y a 7 ans 5 mois #27879
par gaudefroy
Réponse de gaudefroy sur le sujet Re:Script ajout d'utilisateur avec windows Form
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&#8209;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
[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&#8209;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
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Script ajout d'utilisateur avec windows Form