Académique Documents
Professionnel Documents
Culture Documents
C’est le fait de mettre des commandes dans un fichier pour automatiser les
actions/procédures. Il sera demandé à l’épreuve de savoir lire et expliquer un script.
Scripts automatisés: On nous demande pas de partir de zéro et d’en faire un. On utilise des
commandes (des petits programmes légers) on va les mettre ensemble pour avoir une
action automatisée.
Scripts interactifs : il posera des questions à l’admin et le script se lancera en fonction des
réponses (add user sur linux, installation pfsense, sconfig sur powershell).
Dans powershell je peux aussi faire des commandes bash (ex: ipconfig, hostname, etc…)
Commandes Powershell
Pour ajouter:
>add-
>new-
Supprimer :
>remove-
PowerShell fonctionne avec des modules, qui sont importés lorsqu’on installe une appli ou
un logiciel. On peut importer un module en faisant :
>Import-Module *nom du module*
aide:
>get-help *nom de la commande* parfois il faudra les télécharger sur internet donc
connexion
Variables :
>$+*nom de la variable*=”contenu” (ex : $test=”message” ou 3 ou ipconfig)
si entre “ “ = chaîne de caractère
La variable est propre à la session, si on ferme la console powershell et qu’on l’on ré-ouvre
une la variable ne sera plus.
Il faut faire attention à ne pas faire de conflits avec une variable déjà existante.
Ne pas utiliser _ ou __ après $
Pour éviter les conflits, mettre des noms en français.
La partie haute est un fichier test afin d’écrire notre script et la partie basse est une fenêtre
powershell afin de tester nos commandes en même temps.
exemple: Attention lorsqu’on fait des tests utiliser une VM afin de ne pas modifier les
paramètres de notre machine physique.
On créer une variable prénom qui affichera veuillez entrer votre prénom
La deuxième ligne reprend la première ligne afin de dire bonjour au prénom entré par
l’utilisateur:
Pour tester faire F5 ou le petit bouton play vert ce qui a pour conséquence de lancer le
script:
On ajoute une condition >if (variable)
Dans la commande, nous demandons d'entrer un prénom, si le prénom est ali, nous aurons
le message Bonjour Administrateur en vert.
Sinon (autre prénom que ali) nous aurons le message Bonjour “le prénom” en noir.
exemple 2: script pour ajouter adresse IP :
On test :
Pour le masque:
Lancer le script:
Du coup la variable apipa indique que si l’adresse est en 169.254 on ne retire pas la
gateway mais si c’est autre chose ça supprime la gateway.
Le .split(“.”))[0,1] -join “.” signifie qu’on prends les 2 premiers octets de l'adresse en apipa et
qu’on les joint avec un “.” pour les séparer.
Le script: on vérifie que le service est installé si oui on ajoute un range d’adresses et le mask
puis on modifie les options (set) routeur(ip), serveurdns(ip), dnsdomain(nom du domaine)
Ici dans le script nous avons créer les variables $domain et $addomain puis on a fait en
sorte que lorsqu’on le lance il nous demande de choisir entre le choix 1 et 2. Si on tape autre
chose on a un message nous disant de choisir uniquement 1 ou 2 avec une attente de 3
secondes avant de quitter.
$domain=$(Get-ADDomain).dnsroot
$addomain=(Get-ADDomain).distinguishedname #nom de domaine au format LDAP
Write-Host "souhaitez vous ajouter ou supprimer une OU dans le domaine $domain"
Write-Host "1) ajouter"
Write-Host "2) supprimer"
$choix=Read-Host "réponse"
Switch ($choix) {
1{
$unite=Read-Host "veuillez donner le nom d'une unité d'organisation à créer dans le
domaine $domaine"
New-ADOrganizationalUnit -Name $unite -Path $addomain
}
2{
$unite=Read-Host "veuillez donner le nom d'une unité d'organisation à supprimer
dans le domaine $domaine"
Set-ADOrganizationalUnit -Identity "OU=$unite,$addomain"
-ProtectedFromAccidentalDeletion $false
Remove-ADOrganizationalUnit -Identity "OU=$unite,$addomain" -Confirm:$false
}
default {
Write-Host "merci de taper 1 ou 2"
Write-Host "Bye"
sleep 3
}
}
On améliore le script en demandant à ce dernier de chercher lui-même le chemin pour
supprimer l’OU en ajoutant la variable pour filtrer le nom.
$domain=$(Get-ADDomain).dnsroot
$addomain=(Get-ADDomain).distinguishedname #nom de domaine au format LDAP
Write-Host "souhaitez vous ajouter ou supprimer une OU dans le domaine $domain"
Write-Host "1) ajouter"
Write-Host "2) supprimer"
$choix=Read-Host "réponse"
Switch ($choix) {
1{
$unite=Read-Host "veuillez donner le nom d'une unité d'organisation à créer dans le
domaine $domaine"
New-ADOrganizationalUnit -Name $unite -Path $addomain
}
2{
$domain=$(Get-ADDomain).dnsroot
$addomain=(Get-ADDomain).distinguishedname #nom de domaine au format LDAP
Write-Host "souhaitez vous ajouter ou supprimer une OU dans le domaine $domain"
Write-Host "1) ajouter"
Write-Host "2) supprimer"
$choix=Read-Host "réponse"
Switch ($choix) {
1{
Write-Host "Souhaitez-vous créer une sous-unité, ou une unité à la racine du
domaine $domain"
Write-Host "1) sous-unité"
Write-Host "2) à la racine"
$choix=Read-Host "réponse"
switch ($choix) {
1 { $parent=Read-Host "veuillez donner le nom de l'OU parent "
$unite=Read-Host "veuillez donner le nom d'une unité d'organisation à créer
dans l'OU parent $parent"
$chemin=$(get-ADOrganizationalUnit -filter "name -eq '$parent'").distinguishedname
New-ADOrganizationalUnit -Name $unite -Path "$chemin"
}
2{
lien pour un tuto : Comment créer de nouveaux utilisateurs d'AD avec PowerShell
On créer un fichier sur un tableur dans lequel on indique : nom, prenom, pass, ou
Attention à mettre un mot de passe sécurisé
On enregistre le fichier au format csv (coma separation value) : utilisateurs.csv
on choisi le “;” plutôt que la “,”
On transfère le fichier utilisateurs.csv sur le serveur Windows puis on va sur Powershell ISE
afin de créer le script.
On créer d’abord la variable pour importer le fichier .csv avec le -delimiter qui indique qu’on
délimite avec des “;” et on indique le chemin (ici le bureau) :
Si on ajoute un Write-host $($fichier) ou echo (c’est un alias de write-host)$fichier ça
affiche le contenu du fichier bien séparé par des “;” :
.ou:
foreach va répéter une action(commande) pour chacune des lignes d’un élément/objet (la
plupart du temps un fichier texte)
Ensuite on enregistre le contenu de la ligne en ne prenant que le nom (le echo ne sert ici
qu'à montrer le fonctionnement en réalité on ne le mettra pas)
On fait la même chose pour chaque colonne (nom, prenom, pass, ou), Attention pour le mot
de pass il faudra ajouter ConvertTo-SecureString -AsPlainText $($user).pass -Force
Ça permet de convertir en chaîne de caractères pour que Windows puisse le stocker dans
sa mémoire sinon Windows n’acceptera pas de créer un utilisateur si le mot de passe est
visible. Pour $ou on utilise un filtre pour récupérer le chemin de l’ou.
Pour le login on demandera de taper la première lettre du prénom(0,1)+un point “.”+le nom.
On aura donc pour jimmy hendrix on aura j.hendrix. Il faut aussi rajouter le nom de domaine
ici $dnsdomain pour l’identifiant de connexion.
A la fin on ajoute la commande pour ajouter un utilisateur en utilisant les variables qu’on a
écrit avant. Ca créera les utilisateurs directement sur AD en remplissant les champs choisis:
$users=Import-Csv -Delimiter ";" -Path .\Desktop\utilisateurs.csv