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.
- L'immersion PowerShell : cmdlets, objets, aides.
- Les tâches planifiées : le crontab de Windows.
- Automatiser le parc : GPO + scripts + partages, tout se rejoint.
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.
$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)
PS C:\> powershell c:\chemin-absolu\monscript.ps1
PS C:\> Get-ExecutionPolicy
Restricted
PS C:\> Set-ExecutionPolicy unrestricted
PS C:\> Get-ExecutionPolicy
Unrestricted
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
Set
Start
Stop
Out
New
Add
Remove
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
PS C:\> $maintenant.DayOfYear
221
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
PS C:\> Get-Help Copy-Item
PS C:\> Get-Help Get-Date -examples
PS C:\> Get-Command
PS C:\> Get-Date | Get-Member
PS C:\> $variable | Get-Member
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
- Lancement : chercher « Task Scheduler » (Gestionnaire de tâches planifiées) ou Windows + R puis
taskschd.msc.
- Trois façons de créer une tâche : le wizard (Basic Task), les fenêtres complètes (Create Task), ou un script.
- Une tâche = un déclencheur (horaire, événement...) + une action (commande et arguments).
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.
- Le script vit sur un partage UNC (semaine 5) :
\\SERVEURINTRANET\Automatisations\sauvegardeGraphiste.ps1
- Une GPO (semaine 6) déploie la tâche planifiée sur les postes : Computer Configuration, Preferences, Scheduled Tasks.
- Chaque client exécute le script à l'heure dite - sans qu'on touche un seul poste.
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.
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 !