TP1 POWERSHELL : Initiation PowerShell
Description du thème
Propriétés Description
Intitulé long Initiation à PowerShell avec des commandes de base du langage en mode
console
Formation BTS Services informatiques aux organisations
concernée
Matière Support système des accès utilisateur
Présentation Initiation à PowerShell avec des commandes de base du langage pour la gestion
des dossiers et des fichiers, l’accès aux données du système et une découverte
des propriétés et des méthodes des objets.
Notions Support système des accès utilisateurs
Activités
D5.1 - Gestion des configurations
• A5.1.2 Recueil d'informations sur une configuration et ses éléments
•
Savoir-faire
• Exploiter les fonctions de base d’un langage de commandes
Transversalité SI4 (Base de la programmation) – Concept de base de la programmation objet*
Pré-requis Notation standard d’accès aux objets (objet.méthode ; objet.propriété)
Outils PowerShell
Mots-clés Langage de commandes, powershell, windows
Auteur(es) Daniel Régnier
Version v 1.0
Présentation
Ce document est une proposition d’initiation à un langage de commandes dans le cadre du SI1. Le
langage utilisé est PowerShell sur un système Windows 7. Cette première partie n’aborde pas les
scripts. Les commandes sont saisies dans la console PowerShell, équivalente à l’invite de
commandes cmd.exe.
A ce stade de l’initiation, les applets de commande sont simplement nommés commandes
PowerShell. Le pipeline, utilisé seulement avec la commande Get-Member, n’est pas expliqué.
Les concepts sur les classes et les objets ne sont pas abordés. Seule l’utilisation des propriétés et des
méthodes sont présentées pour la réalisation des exercices.
Ce coté labo se décompose en cinq parties :
- 1) Petites astuces de la console - 2) Obtenir de l’aide sur une commande
- 3) Gérer les fichiers et les dossiers
- 4) Accès aux propriétés et aux méthodes d’un objet
- 5) Accès aux informations du système
Les différentes parties s’appuient sur une annexe présentant les commandes à utiliser. La partie 4
nécessite la création d’un dossier et d’un fichier créés dans la partie 3.
Page 1/22
Ce coté labo est suivi d’une découverte de scripts pour la gestion de comptes utilisateurs locaux avec
Windows 7.
Page 2/22
1) Petites astuces de la console
Pour ce TP, vous utiliserez deux machines du domaine de votre agence, c’est-à-dire la mv nommée
XXX7ENT641 et XXX7ENT642, un technicien par mv.
Lancer la console PowerShell sous Windows 7 :
Démarrer\Tous les programmes\Accessoires\Windows PowerShell\Windows PowerShell
Les touches les plus intéressantes :
Touche Description
[Flèche en haut]
Permet de faire défiler l’historique des commandes déjà frappées.
[Flèche en bas]
[F7] Affiche une boîte contenant l’historique des commandes.
[F8] Fait défiler l’historique sur la ligne de commande.
[Ctrl] C Met fin à l’exécution de l’instruction courante.
Exemple avec la touche F7 :
Une fois la commande retrouvée dans l’historique, vous pouvez soit presser la touche [Entrée] pour la
sélectionner et l’exécuter, soit presser la flèche droite (ou gauche) pour modifier la commande avant
de l’exécuter.
La touche tabulation [tab] permet de compléter le nom des commandes, le nom des paramètres et les
chemins d’accès aux fichiers et dossiers.
L’action successive de la touche tabulation [tab] liste les éléments commençant par les caractères
spécifiés.
Exemples (ne saisir que la partie encadrée de la figure ci-dessous):
Saisir assez de caractères pour restreindre la liste des commandes
: listées
-c :
L’action de la touche [tab] propose la première commande commençant par get
La saisie d’un espace et l’action de la touche [tab] liste les éléments du dossier actif :
Remarque : le point devant le \ représente le chemin du dossier actif (ici c:\testPowershell).
La saisie du début
d’un paramètre –r :
Page 3/22
L’action de la touche [tab] complète le nom du paramètre :
Remarque : la saisie seule du caractère (-) permet de lister tous les paramètres possibles.
Il est possible bien sûr de spécifier le chemin en partant d’une lettre de volume disque :
L’action de la touche [tab] complète le nom du dossier :
Remarque : Le chemin peut ainsi être entièrement complété à l’aide de l’action successive de [tab].
2) Obtenir de l’aide sur une commande
En vous aidant de l’annexe 1 : Commandes pour obtenir de l’aide
Réaliser les actions suivantes :
Afficher l’aide sur la commande Get-Alias
Afficher l’aide avec les exemples sur la commande Get-Alias
En vous aidant de cette aide :
Afficher tous les alias dont le nom commence par la lettre g
Afficher la commande qui correspond à l’alias dont le nom est sl
Afficher tous les alias dont la définition est Get-ChildItem
(Retrouver les alias de la commande DOS et de la commande Linux pour ceux qui connaissent ces
systèmes)
A partir de l’exemple 2 de l’aide de la commande Get-PSDrive, afficher les informations du volume
nommé C
Afficher les méthodes et les propriétés des objets retournés par la commande Get-Location
Afficher les méthodes et les propriétés des objets retournés par la commande Get-PSDrive
Remarque : L’utilisation des propriétés et des méthodes sera abordé dans la partie 4).
3) Gérer les fichiers et les dossiers
En vous aidant de l’annexe 2 : Commandes pour gérer les fichiers et les dossiers
Réaliser les actions suivantes :
Afficher le chemin du dossier courant
Se déplacer à la racine de la partition C: (chemin c:\)
Afficher la liste des dossiers et fichiers (en étant sous c:\)
Page 4/22
A cet emplacement, créer un dossier nommé testPowerShell
Se déplacer dans le dossier c:\testPowerShell
Créer un dossier nommé testdossier (dans testPowerShell)
Créer un fichier nommé test1.txt, contenant la phrase "Tp PowerShell 1"
Afficher la liste des dossiers et fichiers
Copier le fichier test1.txt sous le nom test2.txt
Renommer le fichier test1.txt avec le nom essai1.txt
Copier le fichier essai1.txt dans le dossier testdossier\essai1.txt
Afficher la liste des fichiers du dossier et des sous-dossiers de testPowerShell
Copier le dossier testdossier (avec ses fichiers) dans un nouveau dossier test2dossier
Déplacer le fichier test2.txt dans le dossier testdossier
Supprimer le dossier test2dossier (avec ses fichiers)
Tester l’existence du dossier c:\windows
Afficher le contenu du dossier c:\windows
Afficher la liste des fichiers .exe du dossier c:\windows
4) Accès aux propriétés et aux méthodes d’un objet
En vous aidant de l’annexe 3 : initiation aux variables, aux propriétés et aux méthodes des objets
Affecter à la variable $loc, le résultat de la commande Get-Location.
Afficher les propriétés et les méthodes de la variable $loc
Afficher le chemin du dossier courant contenu dans cette variable.
Afficher les informations sur le disque contenu par cette variable.
Afficher les informations sur le ‘Provider’ contenu par cette variable.
Affecter à la variable $lect, le résultat de la commande Get-PSDrive –Name C
Afficher les propriétés et les méthodes de la variable $lect
A partir de la variable $lect, afficher la taille en octet du volume utilisé, afficher la taille en octet du
volume libre.
Remarque : pour avoir ces tailles en Go, diviser par 1GB (en utilisant l’opérateur /)
Affecter à la variable $fichier, le résultat de la commande Get-ChildItem c:\testPowerShell\essai1.txt
Afficher les propriétés et les méthodes de la variable $fichier
Page 5/22
A partir de la variable $fichier, afficher le nom du fichier, afficher la taille en octet du fichier, afficher le
nom complet du fichier (avec le chemin), afficher l’extension seule du fichier, afficher la date du
dernier accès.
A l’aide d’une méthode de la variable $fichier, copier ce fichier dans un nouveau fichier nommé C:\
TestPowerShell\essai2.txt
A partir de la variable $fichier, supprimer le fichier essai1.txt
Vérifier la validation de l’action précédente avec la commande Get-ChildItem
Lancer bloc-note (notepad.exe) et réduire la fenêtre du Bloc-notes
Lancer la commande Get-Process et vérifier que le Bloc-notes soit bien dans les processus actifs
Pré-requis : Ouvrir Notepad et laisser le ouvert pour la suite
Affecter à la variable $proc, le résultat de la commande Get-Process notepad
Afficher les propriétés et les méthodes de la variable $proc
A partir de la variable $proc, afficher la description du processus, afficher le chemin d’accès de
l’exécutable.
A partir de la variable $proc, supprimer (tuer) le processus du Bloc-notes
5) Accès aux informations du système
En vous aidant de l’annexe 4 : Accéder aux ressources du système d’exploitation Windows
Afficher toutes les informations concernant le contrôleur vidéo de votre système
Affecter à la variable $video, le résultat de la commande précédente
Afficher les propriétés et les méthodes de la variable $video
A partir de la variable $video, afficher le nom du contrôleur, la version du driver, le mode video
(résolution) et le nom du processeur video
Afficher les informations concernant le système d’exploitation
Affecter à la variable $os, le résultat de la commande précédente
A partir de la variable $os, afficher le nom du système, le type d’architecture (32-64 bits), la date
d’installation.
Afficher les informations concernant les disques logiques de votre système
Affecter à la variable $vol, le résultat de la commande précédente
Attention, si votre système comporte plusieurs disques logiques, la variable $vol est un tableau
d’objets (voir annexe 4)
Combien de lettre sont utilisées dans votre MV ?
Lesquelles ?
A partir de la variable $vol, et pour le deuxième disque logique seulement, afficher le nom du volume,
afficher la taille, afficher l’espace libre, afficher le système de fichiers.
Remarque : pour avoir ces tailles en Go, diviser par 1GB (en utilisant l’opérateur /)
Page 6/22
Annexe 1 : Commandes pour obtenir de l’aide
Afficher de l’aide sur une commande : Get-Help Commande (ex : Get-Help Get-ChildItem)
Afficher les exemples : Get-Help Commande –Examples
Afficher les alias : Get-Alias
Afficher la liste des méthodes et des propriétés des objets : Commande | Get-member
Annexe 2 : Commandes pour gérer les fichiers et les dossiers
Se déplacer dans les dossiers : Set-Location chemin (ex : Set-Location c:\temps)
Afficher le chemin du dossier courant : Get-Location
Afficher le contenu d’un dossier : Get-ChildItem
Créer un dossier : New-Item nomDossier -ItemType directory
Créer un fichier avec du texte New-Item nomFichier.txt -ItemType file –Value "texte"
Supprimer un fichier ou un dossier : Remove-Item nomFichier.txt
Déplacer un fichier : Move-Item nomFichier.txt -Destination chemin\nomFichier.txt
Déplacer un dossier : Move-Item nomDossier -Destination chemin\nomDossier
Renommer un fichier ou dossier : Rename-Item nomFichier.txt -NewName nomFichier2.txt
Copier un fichier : Copy-Item nomFichier.txt -Destination nomFichier2.txt
Copier un dossier avec ses fichiers : Copy-Item nomDossier -Destination nomDossier1 –Recurse
Tester l’existence d’un fichier ou dossier : Test-Path chemin/nomFichier.txt
Annexe 3 initiation aux variables, aux propriétés et aux méthodes des
objets
Le nom d’une variable commence toujours par $, il peut inclure tout caractère alphanumérique ou le
trait de soulignement.
Windows PowerShell permet de créer des variables qui sont pour l'essentiel des objets nommés. La
sortie de toute commande Windows PowerShell valide peut être stockée dans une variable.
Exemple : $loc = Get-Location
Page 7/22
Il est possible d’utiliser Get-Member pour afficher des informations sur le contenu de variables.
Exemple : $loc | Get-Member ( idem Get-Location | Get-Member )
Le nom de la variable suivi du point permet d’accéder aux propriétés de l’objet référencé par la
variable, exemple pour la propriété Path de la variable $loc.
Exemple : $loc.Path
Remarque : l’usage de la touche tabulation [tab] permet de compléter le nom de la propriété.
De même, l’exécution d’une méthode (action) d’un objet :
Exemple : $fichier.Delete()
Remarque : Pour les méthodes, ne pas oublier les parenthèses avec ou sans paramètre.
Annexe 4 : Accéder aux ressources du système d’exploitation Windows
Les classes WMI (Windows Management Instrumentation) décrivent les ressources qui peuvent être
gérées. Il existe des centaines de classes WMI, certaines d'entre elles contenant des dizaines de
propriétés.
La commande principale est Get-WmiObject, elle permet de lire ces ressources.
Exemple pour consulter les informations suivantes :
Graphiques : Get-WmiOject win32_videocontroller
Système : Get-WmiObject win32_operatingsystem
Disques : Get-WmiObject win32_logicaldisk
Il est toujours possible d’affecter le résultat de la commande Get-WmiObject à une variable, et de
consulter les propriétés et les méthodes de l’objet à l’aide de la commande Get-Member.
Si le résultat de la commande est un ensemble d’objets, la variable affectée est un tableau d’objet,
l’accès au premier élément se fait alors de la manière suivante $var[0], au second élément : $var[1],
etc..
TP2 POWERSHELL: Initiation aux scripts PowerShell
Page 8/22
Description du thème
Propriétés Description
Intitulé long Initiation à la rédaction de scripts dans le langage de commandes PowerShell
Formation BTS Services informatiques aux organisations
concernée
Présentation Les scripts abordés concernent les comptes utilisateurs locaux sur un système
Windows 7. La démarche s’appuie sur la présentation de petits scripts que
l’étudiant doit être capable d’interpréter puis de faire évoluer.
Notions Support système des accès utilisateurs
Activités
D3.3 - Administration et supervision d'une infrastructure
• A3.3.1 Administration sur site ou à distance des éléments d'un réseau,
de serveurs, de services et d'équipements terminaux
D5.1 - Gestion des configurations
• A5.1.2 Recueil d'informations sur une configuration et ses éléments
• A5.1.5 Évaluation d’un élément de configuration ou d’une configuration
Savoir-faire
• Exploiter les fonctions de base d’un langage de commandes
Administration des systèmes
Savoir-faire
• Administrer un système
• Contrôler et améliorer les performances d’un système
• Automatiser une tâche d'administration
Savoir associé
• Langage de commande et scripting
Transversalité Mathématiques pour l’informatique – cours d’algorithmique
Pré-requis Notions d’algorithmique de base : alternative, répétitive.
Notation standard d’accès aux objets (objet.méthode ; objet.propriété)
Outils Microsoft PowerShell
Mots-clés Langage de commandes, scripting, powershell, windows
Auteur(es) Daniel Régnier
Version v 1.1 (Modification gestion mot de passe avec stratégie complexe L.
PERRIN)
Date de V 1.0 Décembre 2012 (v1.1 Septembre 2013)
publication
Présentation
Page 9/22
Ce document est une proposition d’initiation à la rédaction de scripts dans un langage de commandes,
dans le cadre du BTS SIO.
Les scripts abordés concernent les comptes utilisateurs locaux sur un système Windows 7. Les
étudiants doivent posséder les droits nécessaires sur la base locale des comptes. Dans notre cas,
l’étudiant utilisera la même MV Windows 7 que lors du TP Powershell précédent. Chaque étudiant fera
ce TP en autonomie, pas de binôme ou plus. L’aide entre technicien est toujours possible mais
chaque employé doit prendre son autonomie s’il veut grandir dans la société GSB (et donc gagner
plus d’argent ;-).
La démarche s’appuie sur la présentation de petits scripts que l’étudiant doit d’abord interpréter pour
en comprendre le fonctionnement, puis faire évoluer pour répondre à un nouveau besoin. Le dernier
script à produire permet l’ajout de comptes utilisateurs à partir d’un fichier texte, il est réalisé à partir
des deux derniers scripts étudiés.
Les scripts sont présentés avec l’environnement d'écriture de scripts intégré Windows PowerShell ISE
(Integrated Scripting Environment) installé par défaut avec Windows 7. Il est possible d’utiliser un
autre éditeur pour PowerShell, comme PowerGUI que nous étudierons dans un autre TP Powershell.
Il est possible de réaliser de nombreuses variantes de ces scripts, notamment en prévoyant la saisie
d’informations supplémentaires sur les comptes (mot de passe, répertoire personnel,..), l’activation ou
la désactivation des comptes, la mise en place de groupes, l’affectation aux groupes, etc.
TRAVAIL A FAIRE (1)
Utilisation de Windows PowerShell ISE
- Lancer Windows PowerShell ISE sous Windows 7:
Démarrer\Tous les programmes \Accessoires \Windows PowerShell \Windows PowerShell ISE
Présentation des différentes fenêtres :
L’éditeur présente trois volets, un premier volet pour l'éditeur de scripts, un deuxième volet de sortie
pour afficher le résultat d’exécution et un dernier volet qui correspond à la console de saisie
interactive des commandes PowerShell (PS). Suite à l’exécution d’un script, les variables de celui-ci
sont
Page 10/22
accessibles dans la console de saisies des commandes.
Efface le volet de sortie
Edition du script Exécute le script (F5)
Volet de sortie,
résultat de
l’exécution
Console de saisie
des commandes PS
Dans PowerShell, il existe quatre paramètresde stratégie d'exécution des scripts qui sont :
Restricted : paramètre par défaut, n'autorise pas l'exécution des scripts,
AllSigned : n'exécute que les scripts de confiance, donc signés,
RemoteSigned : exécute les scripts locaux sans obligation de confiance et les scripts de
confiance issus d'Internet,
Unrestricted : autorise l'exécution de tous les scripts.
TRAVAIL A FAIRE (2)
- Démarrer Windows PowerShell en tant qu’administrateur (Bouton
droit sur « Windows Powershell » puis cliquer sur « Exécuter en tant
qu’administrateur ».
- Taper la commande Get-ExecutionPolicy pour connaitre la stratégie
en cours
Noter le résultat affiché :
______________________________________________________
- Taper la commande Set-ExecutionPolicy RemoteSigned pour
modifier la stratégie Noter le résultat affiché :
______________________________________________________________________________
Vous répondre « O » à la demande de validation de la commande
- Retaper la commande Get-ExecutionPolicy pour vérifier que la
stratégie en cours désormais n’est plus la même qu’au départ Noter le
résultat affiché :
______________________________________________________
Exercice 1. Accès aux comptes locaux du système
Le premier script étudié permet d’afficher la date de dernière connexion d’un compte local du système.
Page 11/22
- Cliquer avec le bouton droit sur le fichier de script, puis cliquer sur
Propriétés.
- Cliquer sur Débloquer
6) TRAVAIL A FAIRE (Si nécessaire)
- [Effectuer les manipulations indiquées ci-dessus pour le script concerné si vous avez eu un
blocage à l’étape précédente.
- Essayer de nouveau d’exécuter le script, saisir un compte inexistant, vérifier le résultat dans
le volet de sortie.]
- Exécuter le script, saisir un compte local existant, Admin par exemple, vérifier la date de
dernière connexion dans le volet de sortie.
Explications de la ligne 4 : L’accès à la base locale de comptes utilisateurs d’un système Windows est
réalisé avec l’instruction : [ADSI]"WinNT://."
Remarque : Ici, les majuscules et les minuscules doivent être respectées.
Le point représente le nom du système sur lequel est lancée l’instruction, il peut être remplacé par le
nom de l’ordinateur cible. Il faut bien sûr avoir des droits d’administration sur l’ordinateur distant.
Pour filtrer les éléments de la base de comptes, il est possible de spécifier le nom de l’élément
recherché, ici il est contenu dans la variable $nom dans la ligne … [ADSI]"WinNT://./$nom"
TRAVAIL A FAIRE (4)
A faire (seulement si le compte a été trouvé) :
Page 12/22
- Dans la console de saisie des commandes (Volet 3), afficher les propriétés de la variable $compte,
en utilisant la commande suivante : $compte | Get-Member
- Dans le volet de sortie (volet 2), relever le nom des propriétés qui permettent d’afficher le nom
complet et la description d’un compte.
- Renseigner le nom complet du compte admin (par le nom et prénom du premier technicien
responsable de l’agence par exemple). Pour cela Démarrer/ordinateur(BD)/Gérer/Utilisateurs et
groupes/Utilisateurs/Admin(BD)/Propriétés/
Renseigner la zone nommée « Nom complet » ainsi que celle nommée « Description » (exemple de
valeur à saisir pour cette dernière zone : « Compte de l’admin local » puis OK
- Modifier le script lastlogin.ps1 (enregistrer le sous le nom lastloginT4.ps1) pour qu’il affiche ces
informations en plus de la date de dernière connexion. Tester !
Exercice 2. Ajout d’un compte local du système
Le second script étudié permet d’ajouter un compte local à partir de la saisie du nom et de la
description du compte.
Le script :
Connexion à la
base locale
Saisie du nom et
de la description
Test si le compte
n’existe pas déjà
Renseigne la
description
Valide la création
et la modification
des informations
TRAVAIL A FAIRE ( 5)
- Ouvrir le script ajoutCompte.ps1 dans Windows PowerShell ISE (Fichier\Ouvrir).
- Exécuter le script, saisir un nom et une description pour le compte local à ajouter, exemple : test01,
description : Test d’ajout d’un compte.
- Vérifier la création du compte via l’interface graphique Windows (via Gérer). Utiliser F5 si nécessaire
pour rafraichir la liste des comptes
7) Remarque : Par défaut, le nom complet est identique au nom.
Explications :
Ligne 11 : La variable $local possède une méthode create() qui permet de créer un objet de type
"user" (premier paramètre), dont le nom du compte est spécifié par le deuxième paramètre, ici la
variable $nom. Le résultat est une variable nommée $utilisateur.
Page 13/22
Ligne 12 : La variable $utilisateur possède une méthode InvokeSet() qui permet de renseigner une
information du compte, spécifiée par le premier paramètre, dont la valeur est contenue dans le
deuxième, ici $description.
8) TRAVAIL A FAIRE (6)
- Modifier le script ajoutCompte.ps1 (enregistrer le sous le nom ajoutcompteT6.ps1) pour que
le nom complet soit également saisi et renseigné au moment de l’ajout du compte.
- Faire un test avec un nouveau compte (test02), une description : Test d’ajout d’un 2ème
compte et un nom complet (Laurent PERRIN par exemple)
Exercice 3. Parcours d’un fichier texte contenant les informations des comptes utilisateurs Ce
script permet d’afficher tous les noms des comptes utilisateurs contenus dans un fichier texte.
Les informations sont sous la forme: nomCompte/nomComplet/Description
.
Chemin du fichier
listeCompte.txt
Tableau ($colLignes)
qui contient toutes les
lignes du fichier
C e tableau peut être
parcouru comme une Affiche le premier
collection de lignes. élément d’un compte:
nomCompte
9) TRAVAIL A FAIRE (7)
- Ouvrir le script lireFichier.ps1 dans Windows PowerShell ISE (Fichier\Ouvrir).
- Copier le fichier listeCompte.txt dans le dossier C:\testPowerShell (déjà créé via le TP1
Powershell)
- Exécuter le script et vérifier la liste des noms affichés dans le volet de sortie (volet 2).
Explications :
Ligne 10 : Cette instruction peut s’interpréter de cette manière : Pour chaque ligne ($ligne) contenue
dans l’ensemble des lignes ($colLignes). La variable $ligne va successivement prendre la valeur de
chaque ligne du tableau $colLignes.
Ligne 11 : $ligne est une chaîne de caractères. La variable $ligne possède une méthode Split() qui
permet de retourner un tableau construit à partir de la chaîne de caractères contenue dans $ligne. Les
éléments du tableau correspondent aux chaînes de caractères délimitées par le séparateur "/".
TRAVAIL A FAIRE (8)
- Modifier le script lireFichier.ps1 (enregistrer le sous le nom lireFichierT8.ps1) pour que le nom
complet et la description soient également affichés en dessous du nom du compte. Tester.
TRAVAIL A FAIRE ( 9)
Page 14/22
- A l’aide desdeux derniers scripts (ajout d’un compte et lire dans un fichier
) écrire un scriptqui permet
d’ajouter dans la base locale du système, tous les comptes contenus dans le fichier listeCompte.txt
avec comme mot de passe P@ssw0rdpour tous.
Ce script portera le nomajoutuserdepuisfichierT9.ps1
- Tester l’ajout de ces comptes pour obtenir
:
- Faire un deuxième test avec le même fichier, que se passe
-t-il pour les noms déjà existants?
Exercice 4. Suppressions de comptes utilisateurs
Ce script permet de supprimer tous les comptes utilisateurs dont les noms sont contenus dans un
fichier texte.
Les informations sont toujours sous la forme : nomCompte/nomComplet/Description
Le script :
Suppression du
compte s’il existe
10) TRAVAIL A FAIRE (10)
- Ouvrir le script suppressionCompteFichier.ps1 dans Windows PowerShell ISE (Fichier\Ouvrir).
- Exécuter le script et vérifier la liste des noms affichés dans le volet de sortie (volet 2).
- Vérifier la suppression des comptes dans Utilisateurs et groupes locaux, dossier Utilisateurs.
Explications :
Ligne 17 : Comme pour la création, la variable $local possède une méthode delete() qui permet de
supprimer un objet de type "user" (premier paramètre), dont le nom du compte est spécifié par le
deuxième paramètre, ici la variable $nom.
Page 15/22
11) TRAVAIL A FAIRE (11)
- Réaliser les modifications pour que la suppression concerne également les comptes test01 et test02
créés à l’exercice 1.
- Exécuter le script et vérifier si tous les comptes créés ont été supprimés.
12) TP3 POWERSHELL : Administration Active Directory
Description du thème
Propriétés Description
Intitulé long Administration Active Directory à l’aide de Powershell
Formation concernée BTS Services informatiques aux organisations
Présentation Automatiser des tâches répétitives liées aux objets répertoires, permissions,
groupes d’utilisateurs et utilisateurs
Notions Support système des accès utilisateurs
Activités
D3.3 - Administration et supervision d'une infrastructure
• A3.3.1 Administration sur site ou à distance des éléments d'un réseau,
de serveurs, de services et d'équipements terminaux
D5.1 - Gestion des configurations
• A5.1.2 Recueil d'informations sur une configuration et ses éléments
• A5.1.5 Évaluation d’un élément de configuration ou d’une configuration
Savoir-faire
• Exploiter les fonctions de base d’un langage de commandes
Administration des systèmes
Savoir-faire
• Administrer un système
• Contrôler et améliorer les performances d’un système
• Automatiser une tâche d'administration
Savoir associé
• Langage de commande et scripting
Transversalité Mathématiques pour l’informatique – cours d’algorithmique
Pré-requis TP 1 et TP 2 Powershell
Outils Microsoft PowerShell / PowerGUI
Page 16/22
Mots-clés Langage de commandes, scripting, powershell, windows
Auteur(es) Laurent PERRIN
Version v 1.0
Présentation
L’objectif de ce support est d’aborder Powershell dans un contexte de domaine Active Directory.
L’apprenant va devoir construire à la fin de ce support un script complexe de manière à appliquer ses
connaissances du langage Powershell tout en les développant autour de l’Active Directory.
Lors des deux derniers TP, l’apprenant a travaillé la création de scripts sur le produit Windows
Powershell ISE. Pour ce troisième TP, nous allons utiliser un produit gratuit nommé PowerGUI (site
officiel : powergui.org). Ce T.P. pourrait très bien continuer à se faire sur ISE, l’objectif pédagogique est
de varier vos expériences et donc d’enrichir votre C.V. ;-)
Il est fortement conseillé à chaque apprenant d’enregistrer ses versions de scripts à chaque fois qu’il
complexifie son script de manière à revenir facilement à la dernière version stable connue de son
script ;-). Vous travaillerez en binôme sur le PC de l’administrateur (donc XXX7ENT641)
TRAVAIL A FAIRE (1)
Installation de PowerGUI
- Lancer le fichier d’installation de PowerGUI nommé « PowerGUI.3.8.0.129 » (Install par défaut)
- Lancer l’applicatif “PowerGUI Script Editor” (Démarrer\PowerGUI)
OBJECTIF 1 :
- Comprendre la notion d’arborescence LDAP et la construction du Distinguished Name
- Comprendre certains attributs d’un objet Active Directory type utilisateur.
RESSOURCES NECESSAIRES :
- Le document numérique « Arborescence_LDAP.doc »
- Le document numérique « Fiche_AdministrationActiveDirectoryViaADSI.doc » - Le fichier
listeusersobj1.txt
TRAVAIL A FAIRE (2)
- Lire le document numérique « Arborescence_LDAP.pdf » de manière à comprendre la structure
d’un DN (Distinguished Name).
- Lire le document numérique « Fiche_AdministrationActiveDirectoryViaADSI » de manière à
appréhender la création et manipulation d’objets dans l’Active Directory via Powershell.
- Etudier le script creationuserLDAPobj1.ps1 et modifier les valeurs des variables liées au domaine
de manière à ce que ce script soit utilisable dans votre agence GSB.
- Créer une unité d’organisation que vous nommerez « UO1 » via l’outil « Utilisateurs et ordinateurs
Active Directory »
Page 17/22
- Exécuter ce script
- A l’aide de l’outil « Utilisateurs et ordinateurs Active Directory », étudier l’objet utilisateur résultant
de l’exécution du script et compléter l’annexe 1 de ce support, vous pourrez vous rendre compte
de l’emplacement des différentes valeurs et donc de l’intérêt de certains attributs des objets de
type utilisateur. Si vous ne le voyez pas, penser à (vous) rafraichir ;-)
- A l’aide de l’outil « Utilisateurs et ordinateurs Active Directory », supprimer l’utilisateur
nouvellement créé.
OBJECTIF 2 :
- Créer un script exploitant un fichier txt (séparateur compatible csv avec le caractère « , »)
RESSOURCES NECESSAIRES :
- Le fichier listeusersobj2.txt
Remarque : Très souvent, l’administrateur va travailler sur des informations issues d’un fichier au
format tableur
(xls, xlsx, …), pour exécuter un script à partir de ce type de fichier, il va falloir simplifier ce type de
fichier en l’enregistrant au format .csv (où le séparateur est le « ; »). Les langages de scripting
travaillent avec des fichiers basés sur des séparateurs de manière à détecter différentes valeurs
issues d’une même ligne dans ce fichier, très pratique si le séparateur est un peu exotique. Pour cela
il est possible d’utiliser comme dans le TP 2 Powershell, des fonctions (méthodes) qui fassent ce
travail de séparation. Il est également possible d’utiliser des méthodes spécifiques pour les fichiers au
format csv (attention, le séparateur est la « , » et non le « ; »). Comment remplacer tous les « ; » en « ,
» rapidement ? Ouvrir le fichier format .csv (séparateur par défaut « ; ») avec bloc note par exemple et
choisir (remplacer « ; » par « , » pour toutes les instances trouvées). Effectuer un « Enregistrer sous »
au format txt. Le fichier est prêt pour la suite…
TRAVAIL A FAIRE (2)
- Copier le fichier listeusersobj2.txt sous C:\testscript\ de votre MV Windows 7
- Exécuter le script creationuserLDAPobj2.ps1 de manière à vous familiariser à l’importation des
valeurs issues d’un fichier txt (avec séparateur « , »)
OBJECTIF 3 :
- Créer les comptes utilisateurs liés à votre agence GSB
RESSOURCES NECESSAIRES :
- Le fichier excel global de la société GSB (nom : listeusers_Agences.xlsx)
- Une grosse poignée de motivation pour rechercher sur Internet les lignes Powershell pour ajouter
des permissions NTFS (indice : utilisation possible de
Security.AccessControl.FileSystemAccessRule).
Extrait du Cahier des charges du besoin de scripting GSB :
La direction souhaite que les comptes des employés de chaque agence soient créés selon le modèle
donné en Annexe 2.
Chaque employé possèdera un répertoire personnel portant le nom de son login. Ces répertoires
auront pour chemin absolu E:\REPPERSO\<login>. E appartiendra à un nouveau disque dur créé sur
votre serveur (attention à bien mettre « Thin Provision » lors de la création dans votre MV). Si cette
lettre de lecteur est déjà utilisée par une autre mission (celle de la sauvegarde par exemple), vous
pourrez prendre une autre lettre et adapter la suite du TP en fonction. Le lecteur E pointera sur la
deuxième partition du disque de votre serveur, prévoir 10 Go. Voici un exemple de partitionnement
conseillé :
Page 18/22
Les « admins du domaine » auront le contrôle total sur l’ensemble de l’arborescence de ces
répertoires. L’employé aura les droits « Modifier » dessus. Les autres employés n’auront aucun droit
sur les répertoires personnels des autres.
La création des unités d’organisation pourra être réalisée sans Powershell car elles ne sont pas
nombreuses par contre la création des objets utilisateurs, l’affectation de toutes ses valeurs
demandées par la direction, la création de son répertoire personnel ainsi que la majorité des
positionnements de permissions (ace/acl) sur ces derniers devront passer par un script Powershell.
Remarque : Nous ne travaillerons pas, pour l’instant, sur les droits de partages de manière
approfondie. Nous créerons juste un partage caché de la ressource E:\REPPERSO\, nous mettrons
les « Admins du domaine » en Contrôle total et les « Utilisateurs du domaine » en Modifier sur ce
partage.
Le scripting est une partie essentielle dans le métier d’un administrateur réseau. Je vous demanderai
donc de travailler sérieusement cette partie du programme, oui vous allez devoir vous confronter à
des erreurs, des difficultés, non le corrigé ne viendra pas sur un plateau, je suis certain que vous ne
passerez pas plus d’heures à trouver ce scripts que moi à créer ce TP3. Penser à commenter un
maximum vos lignes de scripts. Procéder par étapes, n’essayer pas de tout faire d’un coup, fixez-vous
des réalisations intermédiaires et complexifier par la suite sans oublier de faire du versionning
(sauvegarde intermédiaire pour chaque étapes réussies).
TRAVAIL A FAIRE (3)
- Proposer un script qui réponde aux demandes de la direction de GSB
13) ANNEXE 1 : PROPRIETES D’UN OBJET TYPE UTILISATEUR
(A COMPLETER EN POSITIONNANT LES VALEURS INTEGREES PAR LE SCRIPT
creationsuserLDAPobj1)
Page 19/22
Page 20/22
Page 21/22
14) ANNEXE 2 : EXEMPLE D’INFORMATIONS UTILES POUR LA
DIRECTION GSB SUR UN OBJET UTILISATEUR
Page 22/22