← Semaine 7
semaine 7 - scripts et automatisation

PowerShell : le shell qui pense en objets

Dernière semaine du module intranet ! Après bash côté Linux, voici PowerShell côté Windows - et les tâches planifiées qui font travailler tout le parc pendant la nuit.
bat et ps1

Du .bat au .ps1

lister.bat
Les anciennes commandes MS-DOS : dir, copy... Du texte brut.
lister-services.ps1
Les nouvelles commandes OBJETS de Windows : Get-Service. Chaque résultat est un objet manipulable.
# infos.ps1 : on peut MELANGER les deux mondes $maintenant = Get-Date $maintenant.DayOfYear dir

Simulateur en ligne pour pratiquer sans VM : tio.run/#powershell

execution

Exécuter un script (et débloquer les permissions)

# Executer un script : PS C:\> powershell c:\chemin-absolu\monscript.ps1 # Premier essai : IMPOSSIBLE ! La politique bloque. # Dans PowerShell lance en ADMINISTRATEUR : PS C:\> Get-ExecutionPolicy Restricted PS C:\> Set-ExecutionPolicy unrestricted # repondre Y PS C:\> Get-ExecutionPolicy Unrestricted # Appeler un script (ou un programme) depuis un script : PS C:\> Invoke-Item c:\windows\system32\calc.exe PS C:\> Invoke-Expression d:\scripts\monscript.ps1 PS C:\> & d:\scripts\monscript.ps1
les cmdlets

Le format cmdlet : Verbe-Nom

Un cmdlet est TOUJOURS un verbe et un nom séparés d'un tiret :

Get # obtenir Get-Process, Get-Service, Get-Content Set # definir Set-ExecutionPolicy Start # demarrer Start-Service Stop # arreter Stop-Process Out # sortir Out-File New # creer New-Item Add # ajouter Add-Content Remove # retirer Remove-Item
La règle verbe-nom rend PowerShell devinable : besoin de créer un utilisateur AD ? New-ADUser. Vous venez de le deviner sans documentation.
les objets

Tout est objet : Properties et Methods

PS C:\> $maintenant = Get-Date # Une PROPERTY : une variable membre PS C:\> $maintenant.DayOfYear 221 # Une METHOD : une fonction, avec parentheses PS C:\> $maintenant.IsDaylightSavingTime() True

La différence avec bash : bash transporte du TEXTE entre les commandes, PowerShell transporte des OBJETS complets avec leurs propriétés et leurs méthodes.

les aides

Les trois commandes qui répondent à tout

# 1. L'aide d'une commande PS C:\> Get-Help Copy-Item PS C:\> Get-Help Get-Date -examples # 2. La liste des commandes PS C:\> Get-Command # 3. La composition d'un objet (SES properties et methods) PS C:\> Get-Date | Get-Member PS C:\> $variable | Get-Member # Bonus : voir les champs d'un resultat PS C:\> Get-Date | Format-List

Rappel La comparaison Linux = PowerShell du cours fait le pont : ls/Get-ChildItem, cat/Get-Content, grep/Select-String...

taches planifiees

Le Task Scheduler : le crontab de Windows

# L'action typique pour un script PowerShell : Programme : powershell Arguments : -File C:\Scripts\sauvegarde.ps1
taches sur le parc

Automatiser les CLIENTS : GPO + UNC

Le sommet du module : tout ce qu'on a construit se rejoint.

DHCP donne l'adresse, AD donne l'identité, la GPO donne les règles, le partage donne le script, la tâche donne l'heure. VOILÀ un intranet complet.
idees de scripts

Des idées pour vos scripts

Surveillance
Services arrêtés (Get-Service), processus gourmands (Get-Process), espace disque.
Sauvegarde
Copier les documents des utilisateurs vers le partage, avec la date dans le nom.
Rapports
Exporter l'état du parc dans un fichier déposé sur l'intranet chaque matin.
# Exemple : les services arretes, dans un rapport PS C:\> Get-Service | Where-Object {$_.Status -eq "Stopped"} | Out-File \\SERVEUR\Rapports\services-arretes.txt
resume du module

Le module 2 est complet !

Semaine 4
Le labo virtuel et le rôle DHCP.
Semaine 5
Active Directory et les partages.
Semaine 6
Les GPO qui gouvernent le parc.
Semaine 7
PowerShell et les tâches planifiées.

Le laboratoire de la semaine 7 conclut le Projet Serveur Intranet. Ensuite : le module 3 vous attend côté Linux, avec le serveur d'entreprise !