Question ajouter un user dans une AD et autre question.

Plus d'informations
il y a 8 ans 10 mois #23549 par Riblito
Bonjour :laugh:

Dans le cadre de mes études, je dois réaliser un serveur, faire une présentation etc ...

j'ai faits tout ça, mais afin de peaufiner mes connaissances j'aimerais réaliser un petit programme en powershell pour ajouter un utilisateur sans avoir besoin de venir sur le serveur.

Alors je connais les lignes de code en powershell pour les créers à la main ligne par ligne, mais j'aimerais faire avec une interface graphique.

J'ai fais cela pour bien comprendre comment fonctionne l'interface graphique en powershell :


et en gros j'aimerais avoir des cases ou tu remplis le nom prénom, mot de passe etc ... avec aussi une demande de login admin avant évidemment ( si c'est réalisable )

bref je connais pas grand chose et je viens vous demander de l'aide !

Merci beaucoup pour vos futures réponses<br><br>Message édité par: elemremy, à: 3/05/17 13:22
Pièces jointes :

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

  • PatriceLT
  • Visiteur
  • Visiteur
il y a 8 ans 10 mois #23550 par PatriceLT
Réponse de PatriceLT sur le sujet Re:ajouter un user dans une AD et autre question.
Salut,

Perso je passe par du WPF (Windows Powershell Forms), mais c'est du statique, si tu t'y connais un peu en XML, il y a le possibilité de faire du WPF via du XML.

Sous quelle version powershell est ton serveur ?

Voici un bout de code pour ta structure \&quot;globale\&quot; après, à toi de chercher un peu pour pousser les choses, et mettre des event sur tes différents boutons par exemple.

[code:1]

Import-Module ActiveDirectory

[void] [System.Reflection.Assembly]::LoadWithPartialName(System.Windows.Forms)

[void] [System.Reflection.Assembly]::LoadWithPartialName(System.Drawing)

$form1 = New-Object System.Windows.Forms.Form
$form1.Size = New-Object System.Drawing.Size(400,400)
$form1.Text = \&quot;Essai\&quot;

$btnOK = New-Object System.Windows.Forms.Button
$btnOK.Size = New-Object System.Drawing.Size(150,20)
$btnOK.Location = New-Object System.Drawing.Size(20,20)
$btnOK.Text = \&quot;OK\&quot;
$btnOK.add_click({$form1.close()})

$btnCancel = New-Object System.Windows.Forms.Button
$btnCancel.Size = New-Object System.Drawing.Size(150,20)
$btnCancel.Location = New-Object System.Drawing.Size(40,20)
$btnCancel.Text = \&quot;Cancel\&quot;
$btnCancel.add_click({$form1.close()})

$form1.Controls.add($btnOK)
$form1.Controls.add($btnCancel)
$form1.ShowDialog() | Out-Null

[/code:1]

par exemple, pour les boutons il s'agit d'un exemple comme ça : \&quot;$btnOK.anchor = \&quot;bottom\&quot;. A toi de tester les différentes choses, après moi j'ai la possibilité d'avoir un logiciel dédié à ça (powershell studio) mais qui est payant.

Après c'est à toi de voir, là c'est un exemple simple de WPF statique, moi je ne fais que ça.

Ensuite pour le reste, tu peux y intégrer des ComboBox, listbox, RichTextBox, TextBox et bien d'autres choses (là en ce moment je suis sur du treeview...), après surement d'autres te proposeront du xml, si tu arrives à le comprendre je te conseil de le remplacer par mon code.

Tu peux ensuite passer par du Invoke-Command pour lancer des scripts à distance via du PSSession, tu peux récupérer des informations via de l'ADSI (LDAP). Tu peux même (et c'est ce que je fais) passer par du ADQuest qui est un peu plus chiant à implémenter (via du Snapin) mais tout reste faisable, tout dépend ce que toi, tu veux faire.

Si tu as d'autres questions, n'hésites pas.<br><br>Message édité par: PatriceLT, à: 3/05/17 13:56

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

Plus d'informations
il y a 8 ans 10 mois #23551 par Riblito
Bonjour,

merci pour ton aide.

déjà j'ai oublié de poster ce que j'ai faits pour avoir le résultat du screen.

[code:1]# Windows form
[void][System.Reflection.Assembly]::LoadWithPartialName(\&quot;System.Windows.Forms\&quot;«»)
[void][System.Reflection.Assembly]::LoadWithPartialName(\&quot;System.Drawing\&quot;«»)

# Creation de la form principale
$form = New-Object Windows.Forms.Form

# Pour bloquer le resize du form et supprimer les icones Minimize and Maximize
$form.FormBorderStyle = [System.Windows.Forms.FormBorderStyle]::FixedDialog
$form.MaximizeBox = $false
$form.MinimizeBox = $true
# Choix du titre
$form.Text = \&quot;ISEC - AD\&quot;

# Choix de la taille
$form.Size = New-Object System.Drawing.Size(400,370)

# Bouton OK
$button_ok = New-Object System.Windows.Forms.Button
$button_ok.Text = \&quot;OK\&quot;
$button_ok.Size = New-Object System.Drawing.Size(355,40)
$button_ok.Location = New-Object System.Drawing.Size(20,230)

# Bouton Quitter
$button_quit = New-Object System.Windows.Forms.Button
$button_quit.Text = \&quot;Fermer\&quot;
$button_quit.Size = New-Object System.Drawing.Size(355,40)
$button_quit.Location = New-Object System.Drawing.Size(20,280)
[/code:1]

( j'ai pas tout mis )

Mais ce que tu me montres comme exemple ressemble à ce que j'ai faits.

Je ne connais absolument pas le XML, mais j'arrive quand même à le comprendre plus ou moins quand je lis du XML.

Je ne connais pas la version de powershell de mon serveur, mais c'est un windows serveur 2016 donc il doit être de la même version que sur windows 10 ?

En gros j'arrive à faire du Powershell forms ( les bases )
j'arrive à créer un utilisateur avec du powershell

et j'aimerais faire un script via WPF pour pouvoir en faire un sans avoir besoin de faire les lignes de code à la main.

Par exemple faire une textbox pour renseigner le nom de la personne, le mot de passe. Tu valides avec le bouton et hop ça te créer le nouvel utilisateur dans l'AD avec les données saisies B)

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

  • PatriceLT
  • Visiteur
  • Visiteur
il y a 8 ans 10 mois #23552 par PatriceLT
Réponse de PatriceLT sur le sujet Re:ajouter un user dans une AD et autre question.
Sous du Windows Server 2016 il s'agit de la version 5 de Powershell au pire un psversiontable te donnera la version

Ensuite pour ton code :
[code:1]
# Windows form

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

[void][System.Reflection.Assembly]::LoadWithPartialName(\&quot;System.Drawing\&quot;«»)



# Creation de la form principale

$form = New-Object Windows.Forms.Form



# Pour bloquer le resize du form et supprimer les icones Minimize and Maximize

$form.FormBorderStyle = [System.Windows.Forms.FormBorderStyle]::FixedDialog

$form.MaximizeBox = $false

$form.MinimizeBox = $true

# Choix du titre

$form.Text = \&quot;ISEC - AD\&quot;

[code:2]
#Label User#

$LabelUser = New-Object System.Windows.Forms.Label
$LabelUser.Size ...
$LabelUser.Location...
$LabelUser.Text = \&quot;Saisir un user :\&quot;

#Label Pass#
$LabelPass = New-Object System.Windows.Forms.Label
$LabelPass.Size ...
$LabelPass.Location...
$LabelPass.Text = \&quot;Saisir un mdp :\&quot;

# TextBox Nom #
$TBNom = New-Object System.Windows.Forms.TextBox
$TBNom.Size...
$TBNom.Location...
$TBNom.Text = ''

Faire une textbox pour le prénom ainsi que le samAccountName

# TextBox pass #
$TBPass = New-Object System.Windows.Forms.TextBox
$TBPass.Size...
$TBPass.Location...

Regarde pour du convertToSecure pour le mdp afin de ne pas le rentrer en clair...

# Bouton User #
$BtnUser = New-Object System.Windows.Forms.Button
$BtnUser.Text = \&quot;Création User\&quot;
$BtnUser.Size ...
$BtnUser.Location...
$BtnUser.add_click({New-ADUser -Name \&quot;$TBNom.Text\&quot; -SamAccountName \&quot;$TBSAN.Text\&quot; -AccountPassword (\&quot;$TBPass.Text\&quot; -AsSecureString) -PassThru | Enable-ADAccount})

Après à toi de tester, je ne suis pas sûr que ça fonctionne (ça fait longtemps que je n'ai pas fait de textbox, mais entre autre, ce que tu rentre dans ton textbox user, sera ainsi mis dans la variable $textboxuser.text et donc ta valeur sera placé dans ta commande. Mais c'est dans cette idée. Fais des tests et dis moi ce que tu as comme résultat.
[/code:2]

# Choix de la taille

$form.Size = New-Object System.Drawing.Size(400,370)



# Bouton OK

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

$button_ok.Text = \&quot;OK\&quot;

$button_ok.Size = New-Object System.Drawing.Size(355,40)

$button_ok.Location = New-Object System.Drawing.Size(20,230)



# Bouton Quitter

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

$button_quit.Text = \&quot;Fermer\&quot;

$button_quit.Size = New-Object System.Drawing.Size(355,40)

$button_quit.Location = New-Object System.Drawing.Size(20,280)
[/code:1]

Message édité par: PatriceLT, à: 3/05/17 15:30<br><br>Message édité par: PatriceLT, à: 3/05/17 15:31

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

Plus d'informations
il y a 8 ans 10 mois #23557 par Riblito
Très bien, merci beaucoup.

Se soir je vais essayer cela et te ferais un retour pour voir si tout cela fonctionne. enfin je vais essayer :laugh: :lol:

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

Plus d'informations
il y a 8 ans 10 mois #23559 par Riblito
Bon alors j'ai compris le truc, ça fonctionne bien, du coup quand j'aurais le temps je ferais le reste du script :) je le posterais pour savoir si j'ai tout bien fais.

Mais du coup je me rend compte que quand j'ouvre mon script j'ai quand même une fenêtre powershell bleu qui s'ouvre, c'est inutile. j'ai cherché sur google et j'ai pas réellement trouvé de moyen de la faire disparaître ....
Une solution ? :unsure:

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

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