• Aucun résultat trouvé

Partie n 1 : Introduction

N/A
N/A
Protected

Academic year: 2022

Partager "Partie n 1 : Introduction"

Copied!
15
0
0

Texte intégral

(1)

Partie n°1 : Introduction

Windows PowerShell, anciennement Microsoft Command Shell (MSH), nom de code Monad, est une interface en ligne de commande et un langage de script développé par Microsoft. Il est inclus dans Windows Server 2008 et fondé sur la programmation orientée objet.

Windows PowerShell est le successeur des interfaces en ligne de commande fournies par

command.com (c'est-à-dire l'interface MS-DOS) de Millennium, Windows 98 et de ses prédécesseurs ;

cmd.exe de Windows NT depuis 1993.

Comment ouvrir PowerShell ?

Il se trouve dans "Démarrer / Tous les programmes / Accessoires / Windows PowerShell".

Après lancement vous obtenez ceci :

MonFic.txt

Les commandes de base :

• Effacer l'écran : Clear-Host (ou l'alias cls )

• Afficher la liste des commandes : Get-Command

• Afficher l'aide d'une commande : Get-Help nomCommande

• Afficher l'historique des commandes : History

• Afficher la liste des Alias : Get-Alias

• Afficher la liste des processus actifs : Get-Process

• Afficher la liste des services : Get-Service

• Afficher l'état d'un service en particulier : Get-Service nomService

• Afficher l'heure et la date système : Get-Date

La gestion des fichiers et des dossiers :

• Se déplacer dans les dossiers : Set-Location chemin (ou l'alias cd )

• Afficher le chemin du dossier courant : Get-Location (ou l'alias pwd )

• Afficher le contenu d’un dossier : Get-ChildItem (ou ls, ou dir)

• 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

(2)

Travaux à effectuer :

1. Ouvrez Windows PowerShell 2. Placez-vous sur la racine du disque C:

Commande -> Set-Location c : ...

3. Affichez la liste des dossiers et des fichiers

Commande -> ls ...

4. Créez un dossier Test

Commande -> New-Item Test –ItemType directory ...

5. Placez-vous dans ce dossier

Commande -> Set-Location Test ...

6. Créez un fichier texte MonFic.txt

Commande -> New_Item MonFic.txt –ItemType file ...

7. Créez un fichier texte MonFic1.txt contenant le texte : Bonjour le Monde !

Commande -> New Item MonFic.txt –ItemType file –Value « Bonjour le Monde ! » ...

8. Affichez le chemin du répertoire courant

Commande -> Get-Location ...

9. Copiez le fichier MonFic.txt, ce nouveau fichier portera le nom TonFic.txt

Commande -> Copy-Item MonFic.txt –Destination TonFic.Txt...

10. Renommez le fichier MonFic1.txt sous le nom TonFic2.txt

Commande -> Copy-Item MonFic1.txt –Destination TonFic2.txt...

11. Affichez la liste des dossiers et des fichiers

Commande -> Get-ChildItem...

12. Placez-vous sur la racine du disque C:

Commande -> Set-Location c:\...

13. Créez un dossier Test2

Commande -> New-Item Test2 –ItemType directory...

14. Placez-vous dans ce dossier

Commande -> Set-Location Test2...

15. Copiez le fichier C:\Test\MonFic.txt dans le répertoire courant

Commande -> Copy-Item c:\Test\MonFic.txt –Destination c:\Test2...

16. Copiez le dossier C:\Test dans le répertoire courant sous le nom Test2_1

Commande -> Copy-Item c:\Test –Destination c:\Test2\Test2_1...

17. Supprimez le fichier MonFic.txt

Commande -> Remove-Item MonFic.txt...

18. Supprimez le dossier Test2_1

Commande -> Remove-Item Test2_1...

19. Placez-vous sur la racine du disque C:

Commande -> Set-Location c:\...

20. Testez l'existence du dossier Test2

Commande -> Test-Path c:\Test2\Test2_1...

(3)

21. Supprimez le dossier Test2

Commande -> Remove-Item Test2...

22. Testez l'existence du dossier Test2

Commande -> Test-Path c:\Test2...

23. Supprimez le dossier Test

Commande -> Remove-Item Test...

24. Affichez la liste des fichiers du dossier C:\Windows

Commande -> ls c:\Windows...

25. Affichez la liste des fichiers dont l'extension est exe du dossier C:\Windows

Commande -> ls c:\Windows *.exe...

26. Affichez la liste des fichiers dont le nom contient le mot win du dossier C:\Windows

Commande -> ls c:\Windows *win*...

Les variables :

Le nom des variables débute par le symbole $.

Il est possible de créer des variables en utilisant le signe "=" entre le nom de variable et la commande.

Exemple :

$time = Get-Date

Pour exécuter la "commande" $time, il suffit de la saisir après le prompt :

Vous pouvez également utiliser les propriétés de la commande mère :

Pour supprimer cette "commande", saisissez ceci :

Travaux à effectuer :

1. Affichez l'aide sur la commande Get-Alias

Commande -> Get-Help Get-Alias...

2. Affichez la liste des alias qui commencent par un d

Commande -> Get-Alias d*...

3. A quelle définition correspond l'alias cp ?

Copy-Item...

4. Affichez tous les alias dont la définition est Clear-Host

Commande -> Get-Alias –Definition Clear-Host...

...

5. Exécutez la commande Get-PSDrive, qu'obtenez-vous ?

Des informations sur les lecteurs (nom, taille …) ...

6. Affichez que les informations concernant le disque dur C:

Commande -> Get-PSDrive c ...

7. Affectez à la variable $disk, la commande précédente

Commande -> $disk = Get-PSDrive c...

8. Afficher grâce à la variable $disk, l'espace utilisé sur le disque C:

$disk.used ...

...

(4)

9. Afficher grâce à la variable $disk, l'espace utilisé en Go (ajoutez /1GB à la fin de la ligne) sur le disque C:

$disk.used /1GB ...

Les fichiers :ne

Exemple de fichier texte : C:\temp\Fichier.txt Alves – SISR

Baurand – SLAM Bocq – SLAM Juillard – SISR/SLAM Thevenin – SISR Créez ce fichier.

Affichez le contenu d'un fichier texte :

Affichez la première ligne du fichier texte :

Affichez comme en algorithmique chaque ligne du fichier :

N'affichez que les noms des enseignants contenus dans ce fichier :

Même chose sans utiliser de variable supplémentaire $nom :

Ajoutez une ligne au fichier :

Affichez la ligne qui correspond à Mlle Bocq :

Quelques commandes système :

Affichez la configuration IP :

La commande Net :

(5)

Affichez les partages de la machine :

Petits exercices :

Trouvez la commande qui affiche ceci et que ceci:

Ipconfig | select-string « Adresse IPv »

...

Téléchargez l'éditeur de scripts à l'adresse suivante : http://www.powershellanalyzer.com/

Copiez le dossier téléchargé dans le répertoire C:\

Lancez l'application.

Et saisissez le script ci-dessous :

Cliquez sur la flèche verte en haut à gauche, le script de lancera dans la zone bleue de l'écran.

(6)

Partie n°2 : La création de scripts

Un exemple :

Cet exemple est basé sur l'exemple issu du site : http://www.via-powershell.fr/

Il permet d'afficher les informations DNS à partir d'un log DNS.

Avant de commencer : Ouvrez Windows 2008

Installez sur ce serveur : Active Directory et le service DNS.

Activez les logs pour le DNS (dans le Gestionnaire DNS / Propriétés) comme ceci :

Le script :

$DNSLogContent = Get-Content C:\Windows\System32\DNS\dns.log

$pattern = [regex] ‘\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0- 9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b’

$ipAddresses = $pattern.Matches( $DNSLogContent )

$CList = @()

foreach($ip in $ipAddresses) {

$ClientIP = $ip.groups[0].value

if( ! [BOOL]($CList | Select-String $ClientIP)) {

$ClientName = ([System.Net.Dns]::Resolve($ClientIP)).HostName

$Client = New-Object System.Object

$Client | Add-Member -type NoteProperty -name Name -value $ClientName

$Client | Add-Member -type NoteProperty -name AdrIP -value $ClientIP

$Clist += $Client }

}

$Clist

Exécutez ce script.

(7)

Exercice 1 : Modification du script précédent

Le script précédent, à cause de la description d'une adresse IP est un peu compliqué.

Je vous invite à compléter le script ci-dessous en n'utilisant que les commandes vues dans la Partie n°1 :

$DNSLogContent = Get-Content C:\Windows\System32\DNS\dns.log

$CList = @()

foreach ($ligne in $DNSLogContent) { $ClientIP=$ligne.split(" ")[8]

if ($ClientIP –like "*.*.*.*") {

if( ! [BOOL]($CList | Select-String $ClientIP)) { $ClientName =

([System.Net.Dns]::Resolve($ClientIP)).HostName

$Client = $ClientName + " - " + $ClientIP $Clist += $Client

} } }

$Clist

Exercice 2 : Analyse du fichier de log d'IIS

Installez sur votre serveur, le service IIS.

Accédez à ce serveur en utilisant directement l'adresse 127.0.0.1 et ensuite l'adresse IP de votre serveur Fermez votre navigateur.

Ouvrez le fichier de log qui est apparu dans le répertoire C:\Windows\system32\LogFiles\W3SVC1.

Ecrivez un script qui permet d'afficher une seule fois les adresses IP qui ont accédé à la page iisstart..

Script :

$DNSLogContent = Get-Content C:\inetpub\logs\LogFiles\W3SVC1\u_ex160912.log

$CList = @()

foreach ($ligne in $DNSLogContent) { $ClientIP=$ligne.split(" ")[8]

if ($ClientIP -like "*.*.*.*") {

if( ! [BOOL]($CList | Select-String $ClientIP)) { $Client = $ClientName + " - " + $ClientIP

$Clist += $Client }

} }

$Clist

Exercice 3 : Analyse du fichier de log d'IIS (suite)

Reprenez le script précédent.

Ecrivez un script qui permet d'afficher les adresses IP qui ont accédé à la page iisstart.htm, en ajoutant la date et l'heure de la connexion.

(8)

Script :

$DNSLogContent = Get-Content C:\inetpub\logs\LogFiles\W3SVC1\u_ex160912.log

$CList = @()

foreach ($ligne in $DNSLogContent) { $ClientIP=$ligne.split(" ")[8]

$Date=$ligne.Split(" ")[0]

$Heure=$ligne.Split(" ")[1]

if ($ClientIP -like "*.*.*.*") {

if( ! [BOOL]($CList | Select-String $ClientIP)) {

$Client = $ClientName + " - " + $ClientIP + " - " + $Date + " " +

$Heure

$Clist += $Client }

} }

$Clist

Exercice 4 : Analyse du fichier de log d'IIS (suite et fin)

Reprenez le script précédent.

Ecrivez le script qui permet de saisir une adresse IP au clavier et d'afficher les dates et les heures de connexion à la page iisstart.htm par cette adresse. Si cette adresse IP ne s'est jamais connecté, un message d'erreur doit apparaître (exemple : 5.5.5.5 ne s'est jamais connecté).

NB : Vous aurez besoin des commandes Read-Host et Write-Host Script :

$DNSLogContent = Get-Content C:\inetpub\logs\LogFiles\W3SVC1\u_ex160915.log

$SaisieIP=Read-Host "Saisissez une adresse ip"

foreach ($ligne in $DNSLogContent) { $ClientIP=$ligne.split(" ")[8]

$Date=$ligne.Split(" ")[0]

$Heure=$ligne.Split(" ")[1]

if ($ClientIP -like "*.*.*.*") {

if ($ClientIP -like $SaisieIP) {

$Client = $ClientName + " - " + $ClientIP + " - " + $Date + " " + $Heure $Client

$Message = "Cette adresse ip s'est déjas connectée"

$Message } else {

$Client = $SaisieIP $Client

$Message = "Cette adresse ip ne s'est jamais connectée"

$Message }

} }

Exercice 5 : Accès internet

Rédigez un script qui permet de vérifier que l'accès internet est opérationnel.

(9)

ping 8.8.8.8 > ping.log

$PingLog = Get-Content C:\Users\jstephan\Desktop\PowerShellAnalyzer\ping.log

$nb=0

foreach ($ligne in $PingLog) { $Test = $ligne.Split(" ")[0]

if ($Test -like "Réponse") { $nb=$nb+1

} }

if ($nb -ne 0) { $pourcent=25*$nb

write-Host "La connexion internet est active à " $pourcent "%"

} else {

write-Host "La connexion internet est interrompue" $pourcent "%"

}

(10)

Partie n°3 : La gestion de l'Active Directory

Tous les exemples ci-dessous seront créés dans le domaine BtsSio2.lan.

Les commandes :

Création d'une unité d'organisation : Exemple : Création de l'OU : Salle246

Création d'un utilisateur :

Exemple : Création de l'utilisateur : Admin246 (dans l'OU Salle246)

(11)

Création d'un groupe :

Exemple : Création du groupe : Administrateurs246 (dans l'OU Salle246)

Affectation d'un utilisateur dans un groupe :

Exemple : Affectation d'Admin246 dans le groupe Administrateurs246 (de l'OU Salle246)

(12)

Affichez les membres d'un groupe :

Exemple : Affichez les membres du groupe : Administrateurs246 (de l'OU Salle246)

Affichez les utilisateurs d'une OU :

Exemple : Affichez les utilisateurs de l'OU Salle246

Testez tous ces scripts sous PowerShell Analyser. Et vérifiez dans l'Active Directory si tout est correctement créé.

(13)

Exercice : Création automatisée d'utilisateurs

Vous devez créer, par l'intermédiaire d'un seul script Powershell, une liste d'utilisateurs à partir d'un fichier texte dont voici le contenu :

aburtin-Alex-Burtin-Sio2-P@ssw0rd-Etudiant bcailly-Benoit-Cailly-Sio2-P@ssw0rd-Etudiant ddanois-Daniel-Danois-Sio2-P@ssw0rd-Etudiant jfrina-Joel-Frina-Sio2-P@ssw0rd-Etudiant lmignot-Luc-Mignot-Sio2-P@ssw0rd-Etudiant malves-Manuel-Alves-Prof-P@ss_w0r$-Enseignant

othevenin-Olivier-Thevenin-Prof-P@ss_w0r$-Enseignant pgueron-Patrice-Gueron-Sio2-P@ssw0rd-Etudiant

smillot-Sarah-Millot-Sio2-P@ssw0rd-Etudiant tmonnot-Thierry-Monnot-Sio2-P@ssw0rd-Etudiant

$user = Get-Content C:\User.txt foreach ($ligne in $user) { $login = $ligne.split("-")[0]

$prenom = $ligne.split("-")[1]

$nom = $ligne.split("-")[2]

$groupe = $ligne.split("-")[3]

$mdp = $ligne.split("-")[4]

$desc = $ligne.split("-")[5]

if (!([ADSI]::Exists("WinNT://WIN-UKOUVN78DN3/$groupe,group"))) { ##Creation Groupes

$objOU = [ADSI]"LDAP://localhost:389/ou=UserSio,dc=infotools,dc=com"

$objGroupe = $objOU.Create("group","cn=$groupe") $objGroupe.Put("sAMAccountName", "$groupe") $objGroupe.SetInfo()

} }

Détail de la première ligne : Nom de login : aburtin Prénom : Alex

Nom : Burtin Groupe : Sio2

Mot de passe : P@ssw0rd Description : Etudiant Contraintes :

1. Tous les utilisateurs devront être créés dans l'unité organisationnelle : UsersSio 2. Tous les groupes devront être créés dans l'unité organisationnelle : UsersSio 3. L'unité organisationnelle UsersSio devra être créée par le script.

4. Le répertoire de base de chaque étudiant sera dans le répertoire \\SrvWin\UtilsSio\login Le lecteur réseau affecté à ce répertoire de base sera la lettre P:

Exemple :

Le répertoire de base de l'utilisateur aburtin sera \\SrvWin\UtilsSio\aburtin 5. Le script de connexion sera NomDuGroupe.bat

Exemples :

Le script de connexion de l'utilisateur aburtin sera Sio2.bat Le script de connexion de l'utilisateur malves sera Prof.bat

(14)

6. Le répertoire qui contiendra le profil de chaque utilisateur sera \\SrvWin\ProfilsSio\login Exemple :

Le profil de l'utilisateur aburtin sera stocké dans le répertoire \\SrvWin\ProfilsSio\aburtin 7. Le DisplayName doit être renseigné.

Exemple :

Le DisplayName de l'utilisateur aburtin sera "Alex Burtin"

8. Les comptes devront être activés.

(15)

Chapitre 01 Chapitre 01

Le Scripting Le Scripting

D3.3 – Administration et supervision d'une infrastructure D3.3 – Administration et supervision d'une infrastructure

A3.3.4 Automatisation des tâches d'administration A3.3.4 Automatisation des tâches d'administration

C3.3.4.1 Repérer les tâches d'administration à automatiser C3.3.4.1 Repérer les tâches d'administration à automatiser

C3.3.4.2 Concevoir, réaliser et mettre en place une procédure d'automatisation C3.3.4.2 Concevoir, réaliser et mettre en place une procédure d'automatisation

Références

Documents relatifs

Ce mémoire a été réalisé au sain de SWISS TXT, entreprise en charge de la production des sous-titres destinés aux sourds et malentendants pour les chaînes de la Radio

Les démonstrations ainsi que les résultats numériques seront pris en compte dans la notation dans cette partie. Les exercices sont indépendants.?. Exercice

Avec les unités fondamentales du S ystème I nternational (SI),il arrive souvent que l’on ait à traiter de très grandes valeurs ex : une fréquence de 455000 hertz) ou bien de

28 Eure & Loir Fichier au format TXT 28-Préfecture 29 Finistère Etiquettes Adresses. 30

Comparez les résultats (par exemple avec la fonction isequal) obtenus avec ceux obtenus en utilisant directement les fonctions imdilate, imerode, imclose, et imopen

Arctis, expédition suisse au pôle nord 21:25:00.

[r]

[r]