PowerShell : scripts complets
Script de manipulation de fichiers
Dans ce script, le but est de venir en aide à l'utilisatrice "Micheline"; celle-ci a besoin de récupérer des fichiers et de vérifier sa connexion à Internet.
Il contient différents exemples intéressants de boucle, conditions, etc...
#Ce script est à placer dans le dossier "Travail".
###1 - Lister et afficher les fichier de ce répertoire
gci -r .
###2 - Il y'a trop de fichiers... Afficher seulement les .docx et .html
gci -r | Where-Object {$_.extension -eq ".docx" -or $_.Extension -eq ".html"}
###3 - Afficher Seulement les fichiers ultérieurs au 01/01/2019
#(Le résultat va dans le tableau nommé "fichiers")
$fichiers = gci -r | Where-Object {$_.extension -eq ".docx" -or $_.Extension -eq ".html" -and $_.LastWriteTime -gt "01/01/2019"}
###4 - On ajoute le fichier top secret de Micheline
#On le met d'abord dans la variable $secret
$secret = gci -r | Where-Object {$_.Name -eq "secret.txt"}
#On affiche les fichiers concernés par la sauvegarde
Write-Host "Les fichiers qui seront sauvegardés sont :"; $fichiers; $secret
###5 - Création de l'archive : je pars du fichier secret.txt, puis je mets mon archive à jour avec les autres fichiers
#Création de l'archive
Compress-Archive -LiteralPath $secret.FullName -CompressionLevel Fastest -DestinationPath .\ArchiveMicheline.zip
#Remplissage de l'archive et affichage d'un message d'avertissement
foreach ($file in $fichiers){
Compress-Archive -Path $file.fullname -Update -DestinationPath .\ArchiveMicheline.zip
}
Write-Host "Archive créée"
###6 - Vérifier le processus WINWORD, le tuer si il est présent
#Ce bloc teste si WINWORD est présent et le tue si c'est le cas
#L'argument -ErrorAction sert à ne pas afficher les messages d'erreur (Nous affichons le résultat nous-même)
if(Get-Process -name WINWORD -ErrorAction 'SilentlyContinue'){
Stop-Process -name WINWORD; Write-Host "WINWORD stoppé"}
else{
Write-Host "WINWORD n'est pas en cours d'exécution"}
###7 - Mettre une liste de sites dans un tableau et les tester un par un
#Liste de mes sites
$sites = @("google.com", "portal.office.com", "microsoft.com", "pcastuces.com", "aidermicheline.com")
#Ce bloc teste un à un les sites et affiche le résultat
foreach ($site in $sites){
if (Test-Connection -ComputerName $site -ErrorAction 'SilentlyContinue'){
Write-Host $site, "OK"}
else{
Write-Host $site, "KO"}
}