Vous êtes sur la page 1sur 21

LINUX TP : Crer une interface graphique sous

powershell

Objectif

Crer une interface graphique sous powershell

Crer un outil permettant de raliser certaines tches


d'administration d'un domaine Active Directory

Dure estime:

Pr requis: Utilisation de scripts Powershell

Rappel: Si besoin, commencer par lancer la commande suivante sous powershell en tant
qu'administrateur pour pouvoir excuter les scripts :
Set-ExecutionPolicy RemoteSigned
PS C:\windows\system32> Set-ExecutionPolicy RemoteSigned

Modification de la stratgie d'excution


La stratgie d'excution permet de vous prmunir contre les scripts que vous jugez non fiables. En modifiant
la
stratgie d'excution, vous vous exposez aux risques de scurit dcrits dans la rubrique d'aide
about_Execution_Policies. Voulez-vous modifier la stratgie d'excution ?
[O] Oui [N] Non [S] Suspendre [?] Aide (la valeur par dfaut est O ) : o
PS C:\windows\system32>

1 Mise en place de l'Interface graphique


Source: http://blog.akril.net/2013/04/07/creer-une-windows-form-en-powershell/

1.1 Une premire fentre


Avant de commencer, on va charger la bibliothque Windows Form dans Powershell (non active par
dfaut). Pour ce faire, on utilise la commande suivante :
[System.Reflection.Assembly]::LoadWithPartialName(System.Windows.Forms)

Crons notre premire fentre au look and feel Windows en PowerShell.


[System.Reflection.Assembly]::LoadWithPartialName(System.Windows.Forms)
# Creation de la form principale
$form = New-Object Windows.Forms.Form
# On peut ensuite dfinir certaines proprits de la form , il en a des centaines.
# Choix du titre
$form.Text = "Gestion des comptes utilisateurs du domaine"
# Choix de la taille , par dfaut la taille (largeur, hauteur) est(300,300)

GRETA de Bretagne Occidentale

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


# Affichage de la Windows
$form.ShowDialog()

1.2 Un premier bouton "quitter"


Une fois que nous avons dfini et configur notre fentre de base, nous allons dans un premier temps ajouter un bouton.
Pour ce faire, nous allons simplement dclarer un nouvel objet de type System.Windows.Forms.Button.
La mthode Text nous permet de spcifier lintitul du bouton tandis que les mthodes Size et Location permettent respectivement de dfinir la taille du bouton en pixels ainsi que son emplacement sur la fentre.
# Cration du bouton en lui donnant le nom d'objet "$button_quit"
$button_quit = New-Object System.Windows.Forms.Button
# proprit text de l'objet
$button_quit.Text = "Quitter"
# proprit Size de l'objet
$button_quit.Size = New-Object System.Drawing.Size(150,40)
# proprit location pour positionner l'objet.
# Le point (0;0) correspond au coin suprieur gauche de la fentre.
$button_quit.Location = New-Object System.Drawing.Size(20,230)
# Ajouter cet objet la fentre cre prcdemment
Form.controls.Add ($button_quit)

1.3 Gestion du clic pour le bouton "quitter"


Intressons-nous maintenant la gestion des vnements qui vont notamment nous permettre
dinteragir avec lutilisateur. Par exemple, en cliquant sur des boutons.
Dans notre exemple, le bouton Quitter nous permettra de fermer la fentre en appelant la fonction
mthode Close

# Gestion event quand on clique sur le bouton Fermer


$button_quit.Add_Click(
{
$form.Close();
})

GRETA de Bretagne Occidentale

1.4 Cration d'un menu


L'objectif est de crer le menu suivant :

Inspirez vous de l'exemple suivant pour le raliser : Source ENI

Elments de rponse en annexe:

GRETA de Bretagne Occidentale

1.5 Gestion des actions sur le menu


Commenons par le menu connexion qui proposera l'utilisateur de se connecter au systme avec ses
identifiants Windows. L'objectif est de proposer l'utilisateur l'interface suivante :

1.5.1 Ajouter label et textbox pour saisir des donnes de l'utilisateur


Pour cela, il va falloir afficher le texte dans un objet "label" ainsi qu'une case remplir dans un objet
"Textbox" Exemple de label et de texbox:
# Label texte afficher
$label_connexion = New-Object System.Windows.Forms.Label
$label_connexion.Location = New-Object System.Drawing.Point(20,60)
$label_connexion.Size = New-Object System.Drawing.Size(60,20)
$label_connexion.Text = "Votre login "
# Textbox case remplir par l'utilisateur
$textbox_connexion = New-Object System.Windows.Forms.TextBox
$textbox_connexion.Location = New-Object System.Drawing.Point(80,60)
$textbox_connexion.Size = New-Object System.Drawing.Size(100,20)
Reprendre l'exemple ci-dessus pour dfinir un label et un textbox pour le mot de passe. Si vous dsirez cacher le mot de passe quand il est rentr par l'utilisateur: si l'objet s'appelle $textbox_connexion_mdp :
$textbox_connexion_mdp.UseSystemPasswordChar = $True
Rajouter galement un bouton avec le texte "connexion"

1.5.2 Afficher suivants le menu slectionn


Si vous avez dclar un menu comme ci-dessous: ( $exemple_1 la place de $menu1)
$menu_1 = New-Object System.Windows.Forms.ToolStripMenuItem ('Connexion')
Il faut rajouter juste en dessous:
#Appel la fonction Connexion si l'utilisaeur clique sur Connexion :
$menu_1.Add_Click({Connexion})
Ceci permet de dfinir l'action accomplir si l'utilisateur clique sur le menu_1 ( cad "connexion")
Cela appelle la fonction Connexion dfinir la fin du fichier :
# ------------------- LEs fonctions -------------------------

function Connexion {
# efface le contenu de la form au cas o des objets soient affichs

GRETA de Bretagne Occidentale

$form.Controls.Clear()
# rajoute le menu puis les objets correspondant au menu slectionn
$form.Controls.Add($the_menu)
$form.Controls.Add($label_connexion)
$form.Controls.Add($textbox_connexion)
$form.Controls.Add($label_connexion_mdp)
$form.Controls.Add($textbox_connexion_mdp)
$form.Controls.Add($button_connexion)
}

GRETA de Bretagne Occidentale

1.5.3 Afficher un message si l'utilisateur appuie sur le bouton connexion


Source pour le messagebox : http://cnf1g.com/?p=279

# Label texte afficher


$label_connexion_mdp = New-Object System.Windows.Forms.Label
$label_connexion_mdp.Location = New-Object System.Drawing.Point(20,90)
$label_connexion_mdp.Size = New-Object System.Drawing.Size(60,90)
$label_connexion_mdp.Text = "Mot de passe "

# Textbox case remplir par l'utilisateur


$textbox_connexion_mdp = New-Object System.Windows.Forms.TextBox
$textbox_connexion_mdp.Location = New-Object System.Drawing.Point(80,90)
$textbox_connexion_mdp.Size = New-Object System.Drawing.Size(100,90)
$textbox_connexion_mdp.UseSystemPasswordChar = $True

# Cration du bouton en lui donnant le nom d'objet "$button_connexion"


$button_connexion = New-Object System.Windows.Forms.Button
$button_connexion.Text = "Connexion"
$button_connexion.Location = New-Object System.Drawing.Size(80,120)
$button_connexion.Size = New-Object System.Drawing.Size(100,20)

# Afficher un message si l utilisateur appuie sur le boutont


$button_connexion.Add_Click(
{
# http://cnf1g.com/?p=279
$login = $textbox_connexion.text
[System.Windows.Forms.MessageBox]::Show("Votre login est $login", "confirmation de login" )
})

GRETA de Bretagne Occidentale

2 Grer Active Directory avec Powershell


Source http://blogs.msdn.com/b/rkramesh/archive/2012/01/17/how-to-add-active-directory-modulein-powershell-in-windows-7.aspx
Il existe plusieurs faons d'accder et de configurer Active Directory par powershell.

2.1 Installation du module ActiveDirectory sous un poste Windows 7 du


domaine.
2.1.1 Connecter le poste windows 7 au domaine.
2.1.2 Installation du module activedirectory pour powershell
By default one can not import Active Directory module in Powershell in Windows 7. You need to do either
of the below:
o
o

Download "Active Directory Management Gateway Service" on 2003 or 2008 server


[http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=2852]
Download "Remote Server Administration Tools" on Win 7
[KB958830:http://www.microsoft.com/download/en/details.aspx?id=7887]

Remote Server Administration Tools for Windows 7 with Service Pack 1 (SP1) :

http://www.microsoft.com/fr-FR/download/details.aspx?id=7887
Panneau de configuration Programmes "Activer ou dsactiver des fonctionnalits Windows" :

https://technet.microsoft.com/fr-fr/library/dd378937%28v=ws.10%29.aspx
http://blogs.technet.com/b/ashleymcglone/archive/2011/03/17/step-by-step-how-to-use-activedirectory-powershell-cmdlets-against-2003-domain-controllers.aspx
http://www.jonathanmedd.net/wp-content/uploads/2009/10/ADPowerShell_QuickReference.pdf
Import-Module ActiveDirectory # pour charger le module (erreur si le poste n'est pas connect
GRETA de Bretagne Occidentale

un domaine.)
Remarque: le module ActiveDirectory a une version amliore avec powershell V3. Nous allons
tout de mme utiliser Windows Powershell V2 qui est install par dfaut sous Windows 7.
Pour connatre la version de Powershell:

Ou

Get-Host | Select-Object Version

$PsVersionTable.PSVersion

get-help Get-ADForest

Get-Command -Module activedirectory


QUESTION: Tester la commande Get-help Get-aduser -examples (surtout l'exemple 1) et
dterminer la commande pour lister les utilisateurs d'une Unit d'organisation du domaine (par
exemple l'unit d'organisation bts du domaine puzzle.fr )
Regarder les lments de rponse en annexe pour savoir comment ranger les rsultats dans un
tableau
QUESTION: A l'aide du site http://www.lepide.fr/gestion-des-utilisateurs-active-directory-avecwindows-powershell.html
Crer un utilisateur ( exemple : "bts3" avec le mot de passe "BTSsio123" ) dans une UO de votre
choix ( ex: uo bts du domaine puzzle.fr)
Modifier le mot de passe d'un utilisateur.
Crer une liste d'utilisateurs dans une unit d'organisation (exemple l'U.O. "bts" du domaine
puzzle.fr) partir d'un fichier liste.csv. ( consulter l'annexe si besoin )
QUESTION Ultime: Raliser une interface graphique qui permet d'utiliser toutes les commandes
vues prcdemment ( et d'autres votre convenance qui vous paraissent intressantes)
GRETA de Bretagne Occidentale

3 Annexe Elements de rponse


1.4Cration d'un menu

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

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


# On peut ensuite dfinir certaines proprits de la form , il en a des centaines.
# Choix du titre
$form.Text = "Gestion des comptes utilisateurs du domaine"

# Choix de la taille , par dfaut la taille (largeur, hauteur) est(300,300)


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

# ------------------------ bouton quit -----------------------# Cration du bouton en lui donnant le nom d'objet "$button_quit"
$button_quit = New-Object System.Windows.Forms.Button
# proprit text de l'objet
$button_quit.Text = "Quitter"
# proprit Size de l'objet
$button_quit.Size = New-Object System.Drawing.Size(150,40)
# proprit location pour positionner l'objet.
# Le point (0;0) correspond au coin suprieur gauche de la fentre.
$button_quit.Location = New-Object System.Drawing.Size(20,320)
# Ajouter cet objet la fentre cre prcdemment
$form.controls.Add($button_quit)

# ------------------------ vnnement sur bouton Quit -----------------------# Gestion event quand on clique sur le bouton Quit
$button_quit.Add_Click(
{
$form.Close();
})

#------------------------ Menu -----------------------$the_menu = New-Object System.Windows.Forms.MenuStrip


# Cration de l'objet avec le nom $menu_principal
$menu_principal = New-Object System.Windows.Forms.ToolStripMenuItem("Gestion des comptes")
# menus
$menu_1 = New-Object System.Windows.Forms.ToolStripMenuItem ('Connexion')
$menu_2 = New-Object System.Windows.Forms.ToolStripMenuItem ('Crer comptes utilisateurs')
$menu_3 = New-Object System.Windows.Forms.ToolStripMenuItem ('Modifier mot de passe')
$menu_4 = New-Object System.Windows.Forms.ToolStripMenuItem ('Supprimer comptes utilisateurs')
# sous menu du menu "crer comptes utilisateurs"
$menu_2_a = New-Object System.Windows.Forms.ToolStripMenuItem ('Crer 1 compte utilisateur')
$menu_2_b = New-Object System.Windows.Forms.ToolStripMenuItem ('Crer plusieurs comptes
utilisateurs')
# Ajout des menus au menu principal

GRETA de Bretagne Occidentale

[void]$menu_principal.DropDownItems.Add($menu_1)
[void]$menu_principal.DropDownItems.Add($menu_2)
[void]$menu_principal.DropDownItems.Add($menu_3)
[void]$menu_principal.DropDownItems.Add($menu_4)
# Ajout des sous menus au menu 2
[void]$menu_2.DropDownItems.Add($menu_2_a)
[void]$menu_2.DropDownItems.Add($menu_2_b)
# Ajout des sous menus au menu
[void]$the_menu.Items.Add($menu_principal)
# Ajout du menu la form
$form.Controls.Add($the_menu)

# Affichage de la Windows
$form.ShowDialog()

1.5.3Afficher un message si l'utilisateur appuie sur le bouton connexion


[System.Reflection.Assembly]::LoadWithPartialName(System.Windows.Forms)
# ------------------------ Creation de la form principale -----------------------$form = New-Object Windows.Forms.Form
# On peut ensuite dfinir certaines proprits de la form , il en a des centaines.
# Choix du titre
$form.Text = "Gestion des comptes utilisateurs du domaine"
# Choix de la taille , par dfaut la taille (largeur, hauteur) est(300,300)
$form.Size = New-Object System.Drawing.Size(400,400)
# ------------------------ bouton quit -----------------------# Cration du bouton en lui donnant le nom d'objet "$button_quit"
$button_quit = New-Object System.Windows.Forms.Button
# proprit text de l'objet
$button_quit.Text = "Quitter"
# proprit Size de l'objet
$button_quit.Size = New-Object System.Drawing.Size(150,40)
# proprit location pour positionner l'objet.
# Le point (0;0) correspond au coin suprieur gauche de la fentre.
$button_quit.Location = New-Object System.Drawing.Size(20,320)
# Ajouter cet objet la fentre cre prcdemment
$form.controls.Add($button_quit)
# ------------------------ vnnement sur bouton Quit -----------------------# Gestion event quand on clique sur le bouton Quit
$button_quit.Add_Click(
{
$form.Close()
})
GRETA de Bretagne Occidentale

#------------------------ Menu -----------------------$the_menu = New-Object System.Windows.Forms.MenuStrip


# Cration de l'objet avec le nom $menu_principal
$menu_principal = New-Object System.Windows.Forms.ToolStripMenuItem("Gestion des
comptes")
# menus
$menu_1 = New-Object System.Windows.Forms.ToolStripMenuItem ('Connexion')
#Appel la fonction Connexion si l'utilisaeur clique sur Connexion :
$menu_1.Add_Click({Connexion})
$menu_2 = New-Object System.Windows.Forms.ToolStripMenuItem ('Crer comptes utilisateurs')
$menu_3 = New-Object System.Windows.Forms.ToolStripMenuItem ('Modifier mot de passe')
$menu_4 = New-Object System.Windows.Forms.ToolStripMenuItem ('Supprimer comptes
utilisateurs')
# sous menu du menu "crer comptes utilisateurs"
$menu_2_a = New-Object System.Windows.Forms.ToolStripMenuItem ('Crer 1 compte
utilisateur')
$menu_2_b = New-Object System.Windows.Forms.ToolStripMenuItem ('Crer plusieurs comptes
utilisateurs')
# Ajout des menus au menu principal
[void]$menu_principal.DropDownItems.Add($menu_1)
[void]$menu_principal.DropDownItems.Add($menu_2)
[void]$menu_principal.DropDownItems.Add($menu_3)
[void]$menu_principal.DropDownItems.Add($menu_4)
# Ajout des sous menus au menu 2
[void]$menu_2.DropDownItems.Add($menu_2_a)
[void]$menu_2.DropDownItems.Add($menu_2_b)
# Ajout des sous menus au menu
[void]$the_menu.Items.Add($menu_principal)
# Ajout du menu la form
$form.Controls.Add($the_menu)
# ------------------ label et texbox pour la connexion ------# Label texte afficher
$label_connexion = New-Object System.Windows.Forms.Label
$label_connexion.Location = New-Object System.Drawing.Point(20,60)
$label_connexion.Size = New-Object System.Drawing.Size(60,20)
$label_connexion.Text = "Votre login "
# Textbox case remplir par l'utilisateur
$textbox_connexion = New-Object System.Windows.Forms.TextBox
$textbox_connexion.Location = New-Object System.Drawing.Point(80,60)
$textbox_connexion.Size = New-Object System.Drawing.Size(100,20)
# Label texte afficher
$label_connexion_mdp = New-Object System.Windows.Forms.Label
$label_connexion_mdp.Location = New-Object System.Drawing.Point(20,90)
$label_connexion_mdp.Size = New-Object System.Drawing.Size(60,90)
$label_connexion_mdp.Text = "Mot de passe "

GRETA de Bretagne Occidentale

# Textbox case remplir par l'utilisateur


$textbox_connexion_mdp = New-Object System.Windows.Forms.TextBox
$textbox_connexion_mdp.Location = New-Object System.Drawing.Point(80,90)
$textbox_connexion_mdp.Size = New-Object System.Drawing.Size(100,90)
$textbox_connexion_mdp.UseSystemPasswordChar = $True
# Cration du bouton en lui donnant le nom d'objet "$button_connexion"
$button_connexion = New-Object System.Windows.Forms.Button
$button_connexion.Text = "Connexion"
$button_connexion.Location = New-Object System.Drawing.Size(80,120)
$button_connexion.Size = New-Object System.Drawing.Size(100,20)

# Afficher un message si l utilisateur appuie sur le boutont ( on pourrait appeler une fonction si le
code est trop long)
$button_connexion.Add_Click(
{
# http://cnf1g.com/?p=279
$login = $textbox_connexion.text
[System.Windows.Forms.MessageBox]::Show("Votre login est $login", "confirmation de login" )
})
# ------------------- LEs fonctions -------------------------

function Connexion {
# efface le contenu de la form au cas ou des objets soient affichs
$form.Controls.Clear()
# rajoute le menu puis les objets correspondant au menu slectionn
$form.Controls.Add($the_menu)
$form.Controls.Add($label_connexion)
$form.Controls.Add($textbox_connexion)
$form.Controls.Add($label_connexion_mdp)
$form.Controls.Add($textbox_connexion_mdp)
$form.Controls.Add($button_connexion)
}

# Affichage de la Windows
$form.ShowDialog()

GRETA de Bretagne Occidentale

4 Annexe lments de rponse Powershell et Active Directory


Tester la commande Get-help Get-aduser -examples (surtout l'exemple 1) et dterminer la
commande pour lister les utilisateurs d'une Unit d'organisation du domaine (par exemple l'unit
d'organisation bts du domaine puzzle.fr )
Rponse:
Get-adduser -filter * -searchbase "OU=bts,DC=puzzle,DC=fr"

// Cration d'un tableau avec la liste des utilisateurs.


$Tabusers = Get-adduser -filter * -searchbase "OU=bts,DC=puzzle,DC=fr" | Format-Table
GivenName,Surname,Nale,SamAccountName
$Tabusers

// pour afficher le tableau

5 Annexe Powershell et Active Directory


https://echosystms.wordpress.com/tag/powershell/
Import-Module ActiveDirectory # pour charger le module
Get-Command *-AD*

# pour lister toutes les commandes contenant "-AD"

get-help Get-ADForest
AUTOMATISATION DADMINISTRATION ACTIVE DIRECTORY
Il est possible dadministrer Active Directory via powershell, il est ainsi possible de grer :
Les utilisateurs
Les ordinateurs
Les groupes
Les OU
Afin de pourvoir utiliser les commandes Active Directory dans Powershell, il faut au pralable
importer le module Active Directory via cette commande :
Import-Module ActiveDirectory
Gestion des utilisateurs
Voici les commandes principales powershell pour la gestion des utilisateurs :
Cration dun compte utilisateur : New-ADUser
Modifier une proprit du compte : Set-ADUser
Supprimer un utilisateur : Remove-ADUser
GRETA de Bretagne Occidentale

Rinitialiser un mot de passe : Set-ADAccountPassword


Modification de la date dexpiration : Set-ADAccountExpiration
Dverrouiller un compte utilisateur : Unlock-ADAccount
Activer un compte utilisateur : Enable-ADAccount
Dsactiver un compte utilisateur : Disable-ADAccount

Ainsi pour crer un nouvel utilisateur il faut utiliser cette commande :


New-ADUser -Name "Thomas K" -ChangePasswordAtLogon $True -DisplayName "Thomas K" Enabled $True -Path "OU=Exars,DC=Exia,DC=local" -SamAccountName thomask -Surname K UserPrincipalName thomask -AccountPassword (Read-Host -AsSecureString "Password") GivenName Thomas
Gestion des groupes
Cration dun nouveau groupe : New-ADGroup
Modifier les proprits : Set-ADGroup
Afficher les proprits : Get-ADGroup
Supprimer un groupe : Remove-ADGroup
Ajout dun membre : Add-ADGroupMember
Afficher les membres dun groupe : Get-ADGroupMember
Supprimer un membre : Remove-ADGroupMember

Afin dajouter un utilisateur un groupe :


Add-ADGroupMember Exar -Members "CN=Thomas K,OU=Exars,DC=Exia,DC=Local"
Gestion des ordinateurs
Cration dun compte ordinateur : New-ADComputer
Modification des proprits : Set-ADComputer
Affichage des proprits du compte : Get-ADComputer
Suppression du compte : Remove-ADComputer
Vrification de la relation dapprobation entre le contrleur de domaine et le poste :
Test-ComputerSecureChannel
Rinitialisation du mot de passe du compte ordinateur afin de rparer le canal
scuris : Reset-ComputerMachinePassword
Gestion des units dorganisation

New-ADOrganizationalUnit : effectue la cration dune unit dorganisation.


Set-ADOrganizationalUnit : modifie les diffrentes proprits qui composent lobjet.
Get-ADOrganizationalUnit : affiche les proprits de lunit dorganisation.
Remove-ADOrganizationalUnit : permet la suppression dune OU.

GRETA de Bretagne Occidentale

6 Annexe : installation de windows Powershell V4


https://www.microsoft.com/fr-fr/download/details.aspx?id=40855
Windows Management Framework 4.0 inclut les mises jour de Windows PowerShell, Windows
PowerShell ISE, Windows PowerShell Web Services, WinRM (gestion distance de Windows),
WMI (infrastructure de gestion Windows), le fournisseur WMI du gestionnaire de serveur ainsi
qu'une nouvelle fonctionnalit pour la version 4.0, la configuration d'tat souhait (DSC) de
Windows PowerShell.
Cette version inclut de nouvelles caractristiques et fonctionnalits de Windows Management
Framework 4.0, dont les suivantes :
Windows PowerShell 4.0
Windows PowerShell ISE
Windows PowerShell Web Services (Extension IIS Management OData)
Gestion distance de Windows (WinRM)
Infrastructure de gestion Windows (WMI)
Le fournisseur WMI du gestionnaire de serveur
Une nouvelle fonction pour la version 4.0, la configuration d'tat souhait de Windows
PowerShell

GRETA de Bretagne Occidentale

7 Annexe Active Directory module PowerShell cmdlets


Source : http://ss64.com/ps/ad.html
The Active Directory (AD) module may be installed as part of the RSAT feature on a Windows 7 /
2008 R2 server (or by default, with the AD DS or AD LDS server roles.) Once installed, load the
Active Directory module with Import-Module ActiveDirectory or click Start, Administrative
Tools, Active Directory Module for Windows PowerShell.
Disable-adAccount Disable an Active Directory account.
Enable-adAccount Enable an Active Directory account.
Search-adAccount Get AD user, computer, and service accounts.
Unlock-adAccount Unlock an AD account.
Get-adAccountAuthorizationGroup Get the groups in which an account is a direct or indirect
member.
Set-adAccountControl

Modify user account control (UAC) values for an AD account.

Clear-adAccountExpiration Clear the expiration date for an AD account.


Set-adAccountExpiration Set the expiration date for an AD account.
Set-adAccountPassword

Modify the password of an AD account.

Get-adAccountResultantPasswordReplicationPolicy Resultant password replication policy for an


AD account.
c
Get-adComputer Get one or more AD computers.
New-adComputer Create a new AD computer.
Remove-adComputer Remove an AD computer.
Set-adComputer Modify an AD computer.
Add-adComputerServiceAccount Add one or more service accounts to an AD computer.
Get-adComputerServiceAccount Get the service accounts that are hosted by an AD computer.
Remove-adComputerServiceAccount Remove one or more service accounts from a computer.
d
Get-adDefaultDomainPasswordPolicy Get the default password policy for an AD domain.
Set-adDefaultDomainPasswordPolicy Modify the default password policy for an AD domain.
Move-adDirectoryServer

Move a domain controller in AD DS to a new site.

Move-adDirectoryServerOperationMasterRole Move the operation master (FSMO) roles to an


AD domain controller.
Get-adDomain

Get an AD domain.

Set-adDomain

Modify an AD domain.

Get-adDomainController Get one or more AD domain controllers.


Add-adDomainControllerPasswordReplicationPolicy
Add users, computers, and groups to the Allowed List or the Denied List
of the read-only domain controller (RODC) Password Replication Policy (PRP).
GRETA de Bretagne Occidentale

Get-adDomainControllerPasswordReplicationPolicy RODC PRP Allowed/Denied List.


Remove-adDomainControllerPasswordReplicationPolicy RODC PRP Allowed/Denied List.
Get-adDomainControllerPasswordReplicationPolicyUsage Get the resultant password policy of
the specified
AD Account on the specified RODC.
Set-adDomainMode Set the domain functional level for an AD domain.
f
Get-adFineGrainedPasswordPolicy Get one or more AD fine-grained password policies.
New-adFineGrainedPasswordPolicy Create a new AD fine-grained policy.
Remove-adFineGrainedPasswordPolicy Remove an AD fine-grained password policy.
Set-adFineGrainedPasswordPolicy Modify an AD fine-grained password policy.
Add-adFineGrainedPasswordPolicySubject Apply a fine-grained password policy to one more
users and groups.
Get-adFineGrainedPasswordPolicySubject Get the users and groups to which a fine-grained
policy is applied.
Remove-adFineGrainedPasswordPolicySubject Remove one or more users from a fine-grained
policy.
Get-adForest

Get an AD forest.

Set-adForest

Modify an AD forest.

Set-adForestMode Set the forest mode for an AD forest.


g
Get-adGroup Get one or more AD groups.
New-adGroup Create an AD group.
Remove-adGroup Remove an AD group.
Set-adGroup Modify an AD group.
Add-adGroupMember Add one or more members to an AD group.
Get-adGroupMember Get the members of an AD group.
Remove-adGroupMember Remove one or more members from an AD group.
o
Get-adObject Get one or more AD objects.
Move-adObject Move an AD object or a container of objects to a different container or domain.
New-adObject Create an AD object.
Remove-adObject Remove an AD object.
Rename-adObject Change the name of an AD object.
Restore-adObject Restore an AD object.
Set-adObject Modify an AD object.
Disable-adOptionalFeature Disable an AD optional feature.
Enable-adOptionalFeature Enable an AD optional feature.
GRETA de Bretagne Occidentale

Get-adOptionalFeature Get one or more AD optional features.


Get-adOrganizationalUnit Get one or more AD OUs.
New-adOrganizationalUnit Create a new AD OU.
Remove-adOrganizationalUnit Remove an AD OU.
Set-adOrganizationalUnit Modify an AD OU.
p
Add-adPrincipalGroupMembership Add a member to one or more AD groups.
Get-adPrincipalGroupMembership Get the AD groups that have a specified user, computer, or
group.
Remove-adPrincipalGroupMembership Remove a member from one or more AD groups.
r
Get-adRootDSE

Get the root of a domain controller information tree.

s
Get-adServiceAccount Get one or more AD service accounts.
Install-adServiceAccount Install an AD service account on a computer.
New-adServiceAccount Create a new AD service account.
Remove-adServiceAccount Remove an AD service account.
Set-adServiceAccount Modify an AD service account.
Uninstall-adServiceAccount UnInstall an AD service account from a computer.
Reset-adServiceAccountPassword Reset the service account password for a computer.
u
Get-adUser Get one or more AD users.
New-adUser Create a new AD user.
Remove-adUser Remove an AD user.
Set-adUser Modify an AD user.
Get-adUserResultantPasswordPolicy Get the resultant password policy for a user.
1. To use the cmdlets above under Windows XP run a remote session to a Windows7/2008
machine.
2. If your machine is joined to a domain then a default PSDrive named AD: is created. Use all the
regular file system commands to navigate this:
PS C:\> cd AD:
PS AD:\> dir
3. To use the AD module to manage an Active Directory domain, the Windows Server 2008 R2
Active Directory Web Services (ADWS) service must be installed on at least one domain
controller in the domain. To list all the Active Directory cmdlets installed, type GetCommand *-AD*

GRETA de Bretagne Occidentale

8 Annexe creer-des-comptes-utilisateurs-par-lot-avec-powershell-v2et-le-module-active-directory-server-2008-r2
Source http://www.it-connect.fr/creer-des-comptes-utilisateurs-par-lot-avec-powershell-v2-et-lemodule-active-directory-server-2008-r2/
I. Prsentation
Le module Active Directory Server 2008 R2 a fait son apparition dans Windows Server 2008 R2.
Il est install en mme temps que le rle Contrleur de domaine Active Directory. Le module Active
Directory apporte deux choses : un fournisseur ainsi quun ensemble de commandlets. Grce ce
module, il est dsormais possible dadministrer en ligne de commandes PowerShell les rles
Active Directory Domain Services (AD DS) et Active Directory Lightweight Domain
Services (AD LDS) .
Prenons lexemple dune problmatique courante qui consiste ajouter plusieurs utilisateurs Active
Directory : Au moyen de linterface graphique Windows cette tche requiert aujourdhui un
ensemble de clics de souris pour chaque utilisateur cr. Les informations doivent tre saisies
plusieurs reprises do un risque derreurs accru.
II. Procdure
Pour rpondre cette problmatique nous pourrions imaginer la cration dun fichier Excel o
chaque ligne contiendrait la description dun utilisateur, et en particulier les champs suivants :

Name : nom de lobjet (il sagit du nom visible dans la console de gestion de lActive
Directory) ;

SAMAccountName : nom de login ;

Surname : nom de lutilisateur ;

GivenName : prnom de lutilisateur ;

Description : description du compte ;

ProfilePath : chemin spcifier en cas de profils itinrants ;

ScriptPath : script de logon ;

HomeDrive : lettre de connexion au home directory ;

HomeDirectory : chemin rseau (au format UNC) vers un partage sur un serveur.

listeUtilisateurs
Nous pourrions ensuite enregistrer ce fichier au format CSV (Comma Separated Values) pour en
obtenir un fichier texte dont les champs seraient spars par des points-virgules, Excel ne sachant
pas utiliser la virgule comme sparateur. Un tel fichier pourrait ressembler celui-ci :
GRETA de Bretagne Occidentale

1 Name;SAMAccountName;surname;givenName;Description;profilePath;scriptPath;
2 HomeDrive;HomeDirectory
3 Dupont;Dupont;Dupont;Paul;Compte utilisateur;;login.vbs;L:;\\server1\users
4 Timon;Timon;Timon;Marc;Compte utilisateur;;login.vbs;L:;\\server1\users
Avec PowerShell v2 coupl aux commandlets apportes par le module Active Directory Server
2008 R2, vous allez voir avec quelle facilit nous rpondrons cette problmatique .
Le fait quExcel ne sache pas enregistrer les fichiers CSV avec un sparateur autre que le pointvirgule ne nous drange pas plus que cela car la commandlet Import-CSV sest dot du
paramtre Delimiter qui permet de spcifier un dlimiteur autre que la virgule.
De plus, avec le module Active Directory Server 2008 R2 nous disposons de la commande NewADUser. Celle-ci lorsquon lui passe en entre de pipeline un objet avec les bonnes proprits cr
directement lutilisateur. Cela raccourcira considrablement notre script. Voir ci-aprs :
1 PS > (Import-Csv .\ListeUtilisateurs.csv -Delimiter ;) | New-ADUser
Si lon souhaite crer les utilisateurs dans une unit dorganisation particulire, il suffit de prciser
le paramtre Path, comme dans lexemple suivant :
1 PS > (Import-Csv .\ListeUtilisateurs.csv -Delimiter ;) |
2 New-ADUser -Path OU=Commerce,DC=NomDomaine,DC=com

GRETA de Bretagne Occidentale

9 ANNEXE: RESSOURCES SUPPLEMENTAIRES

9.1 Utiliser le module Active Directory depuis un ordinateur windows 7 en se


connectant au serveur plutt qu'en installant le module active directory
sous Windows 7 ( et RSAP )
http://blogs.technet.com/b/ashleymcglone/archive/2013/06/27/how-to-use-the-2012-activedirectory-cmdlets-from-windows-7.aspx

9.2 Modifier un mot de passe


Setting a User's Password :
https://technet.microsoft.com/fr-fr/library/dd391862(v=ws.10).aspx
https://technet.microsoft.com/fr-fr/library/ee617261.aspx
site http://www.lepide.fr/gestion-des-utilisateurs-active-directory-avec-windows-powershell.html

GRETA de Bretagne Occidentale