Powershell : 4 scripts amusants pour apprendre à s’en servir

 

Powershell est un Invite de commandes, mais aussi un langage de programmation qui permet d'automatiser des tâches, de trier des quantités ahurissantes de données à la volée, mais aussi de s'amuser ! Dans ce dossier nous vous montrons quatre exemples de scripts amusants et plutôt utiles, à minima pour apprendre à dompter le nouvel Invite de commandes.

Powershell remplace désormais l'Invite de commandes classique (cmd) par défaut depuis la mise à jour de Windows 10 Creators Update. Ce programme permet de faire tout ce que pouvait faire Cmd, mais autorise aussi bien les développeurs chevronnés ou les codeurs en herbe à créer des petits scripts par curiosité ou pour réellement coder et simplifier votre utilisation de l'ordinateur. Nous avons essayé à travers ces quelques scripts de vous montrer des exemples aussi instructifs qu'amusants.

Powershell : la boucle des étoiles

Ce petit script permet de s'initier au fonctionnement des boucles. Copiez-le et lancez-le dans une fenêtre de Powershell pour voir directement le résultat :

$i="*"
Do {
$i="$i*"
$i
}
While ($true)

Vous comprenez mieux pourquoi nous avons appelé cette boucle la “boucle des étoiles”. Pour interrompre le programme tapez sur les touches Ctrl + C de votre clavier. Ce petit code est assez amusant, mais peut faire des choses plus utiles. Vous pouvez par exemple remplacer l'étoile par ce que bon vous semble. Mais aussi d'autres éléments, voire des nombres :

$i=1
Do {
$i
$i++
}
While ($i -le 10)

La boucle va alors afficher le nombre contenu dans $1 et ajouter 1 tant que la valeur de $i est inférieure à 10 (d'où le $i -le 10 à la fin, -le signifiant lesser ou inférieure à en anglais). Il est aussi possible de transformer cela en compte à rebours en remplaçant le ++ à côté du $i qui vous l'aurez compris est une variable, par un --. Il faut aussi changer la valeur de départ à 10, et mettre 0 à la fin si vous voulez avoir un compte à rebours façon décollage de fusée.

Et si vous voulez que le rendu de chaque itération soit moins rapide, par exemple que l'affichage de chaque nombre soit séparé d'une seconde, vous pouvez alors ajouter une commande pour mettre le programme en pause pendant un nombre défini de millisecondes à chaque boucle :

$i=10
Do {
$i
$i--
Start-Sleep -m 1000
}
While ($i -ge 0)

Enfin, si vous voulez ajouter un bip à chaque exécution du petit bout de code de la boucle, ajoutez [console]::beep(440,100) où 440 est la fréquence en Hz du son (c'est un La) et 100 est la durée de lecture. Ce qui donne le code suivant :

$i=10
Do {
$i
$i--
[console]::beep(440,100)
Start-Sleep -m 1000
}
While ($i -ge 0)

Notez que dans le cas du compte à rebours, le While (tant que…) ne peut jouer la boucle tant que la valeur de $i est “inférieure à 0”, puisque la valeur de $i commence à 10. Il faut donc remplacer à la dernière ligne -le par -ge qui signifie greater than ou supérieur à en Français.

Faites de la musique avec Powershell

Et si on vous disait que vous pouvez faire de la musique avec Powershell ? Un des exemple les plus ludiques pour s'initier au langage de programmation de Powershell, c'est de programmer des morceaux de musique. Copiez directement le code des chansons dans une fenêtre Powershell et tapez Entrée pour les exécuter.

“La Marche Impériale”

[console]::beep(440,500)
[console]::beep(440,500)
[console]::beep(440,500)
[console]::beep(349,350)
[console]::beep(523,150)
[console]::beep(440,500)
[console]::beep(349,350)
[console]::beep(523,150)
[console]::beep(440,1000)
[console]::beep(659,500)
[console]::beep(659,500)
[console]::beep(659,500)
[console]::beep(698,350)
[console]::beep(523,150)
[console]::beep(415,500)
[console]::beep(349,350)
[console]::beep(523,150)
[console]::beep(440,1000)

“Mission Impossible”

[console]::beep(784,150)
Start-Sleep -m 300
[console]::beep(784,150)
Start-Sleep -m 300
[console]::beep(932,150)
Start-Sleep -m 150
[console]::beep(1047,150)
Start-Sleep -m 150
[console]::beep(784,150)
Start-Sleep -m 300
[console]::beep(784,150)
Start-Sleep -m 300
[console]::beep(699,150)
Start-Sleep -m 150
[console]::beep(740,150)
Start-Sleep -m 150
[console]::beep(784,150)
Start-Sleep -m 300
[console]::beep(784,150)
Start-Sleep -m 300
[console]::beep(932,150)
Start-Sleep -m 150
[console]::beep(1047,150)
Start-Sleep -m 150
[console]::beep(784,150)
Start-Sleep -m 300
[console]::beep(784,150)
Start-Sleep -m 300
[console]::beep(699,150)
Start-Sleep -m 150
[console]::beep(740,150)
Start-Sleep -m 150
[console]::beep(932,150)
[console]::beep(784,150)
[console]::beep(587,1200)
Start-Sleep -m 75
[console]::beep(932,150)
[console]::beep(784,150)
[console]::beep(554,1200)
Start-Sleep -m 75
[console]::beep(932,150)
[console]::beep(784,150)
[console]::beep(523,1200)
Start-Sleep -m 150
[console]::beep(466,150)
[console]::beep(523,150)

Composez votre propre création

Comme vous pouvez le voir en décortiquant la commande on a [console]::beep avec deux chiffres entre parenthèse. Le chiffre de gauche désigne la fréquence du son (par exemple 440 Hz pour un La), et le chiffre de droite, la durée pendant laquelle le son doit être joué (en millisecondes). Dans Mission Impossible on voit également que les sons sont entrecoupés de la commande Start-Sleep -m 150. Celle ci signifie “ne fais plus rien pendant X ms” : parfait pour introduire des silences ! C'est à vous – n'hésitez pas à partager vos créations dans les commentaires !

Faites parler Powershell

Il est aussi possible de transformer du texte en synthèse vocale directement dans Powershell. Pour cela, il faut d'abord charger le module de synthèse vocale en lançant cette commande, puis créer un nouvel objet $speak qui permettra de simplifier son utilisation. Tout cela est somme toute assez simple, copiez les deux lignes suivantes et exécutez-les dans Powershell :

Add-Type -AssemblyName System.speech
$speak = New-Object System.Speech.Synthesis.SpeechSynthesizer

Vous pouvez alors faire parler la synthèse vocale de Powershell :

$speak.Speak("Je donne ma langue au chat")

Il est même possible de transformer à la volée vos phrases en un fichier WAV. Il faut pour cela en quelque sorte ouvrir/commencer l'enregistrement de votre fichier sur votre disque dur en modifiant la commande suivante, puis en l'exécutant. “Fermez” ensuite le fichier une fois que vous aurez fini avec une autre commande pour pouvoir ensuite le lire dans le programme de votre choix :

$speak.SetOutputToWaveFile("C:\users\LE\CHEMIN\QUE\VOUS\AUREZ\CHOISI\test.wav")

Lancez ensuite quelques $speak.Speak() contenant des phrases que vous souhaitez transformer en synthèse vocale, puis exécutez cette commande pour fermer le fichier :

$speak.Dispose()

Si la voix ne vous plaît pas, vous pouvez consulter la liste des voix installées en exécutant la commande :

$speak.GetInstalledVoices().VoiceInfo

Copiez le nom de la voix et collez-le dans cette commande pour la changer :

$speak.SelectVoice('LA VOIX QUE VOUS AVEZ CHOISIE')

Rangez votre bureau Windows 10 avec un script

Ce petit script qui vient de Reddit (merci à u/Zazierx !) est si pratique que nous ne résistons pas à le partager avec vous. Il permet à la fois de s'initier aux opérateurs conditionnels (le code est relativement clair et simple à lire) et à ranger le bureau de Windows 10 dans des dossiers par types de fichier. Copiez et collez le code suivant dans une fenêtre de Powershell puis exécutez-le :

$pathToUse = "C:\Utilisateurs\$env:username\Bureau"
$video = @(
'3g2','3gp','3gpp','asf','avi','divx','f4v',
'flv','h264','ifo','m2ts','m4v','mkv','mod','mov',
'mp4','mpeg','mpg','mswmm','mts','mxf','ogv','rm',
'srt','swf','ts','vep','vob','webm','wlmp','wmv'
)
$spreadsheets = @(
'csv','ods','xls','xlsx'
)
$images = @(
'arw','bmp','cr2','crw','dcm','dds','djvu','djvu',
'dmg','dng','fpx','gif','ico','ithmb','jp2','jpeg',
'jpg','nef','nrw','orf','pcd','pict','png','psd',
'sfw','tga','tif','tiff','webp','xcf'
)
$presentations = @(
'key','odp','pps','ppsx''ppt','pptm','pptx'
)
$docs = @(
'chm','doc','docm','docx','dot','dotx','eml','eps',
'hwp','log','m3u','odt','pages','pdf','pub','rtf',
'sxw','txt','wpd',' wps','xml','xps'
)
$cadFiles = @(
'dwg','dxf'
)
$misc = @(
'bin','cda','dat','dll','exe','isc',
'img','inf','ipa','kmz','lnk','pes',
'ps','rem','torrent','ttf','vcf'
)
$ebooks = @(
'azw','azw3','epub','fb2''lit','lrf','mbp','mobi',
'opf','prc'
)
$web = @(
'css','htm','html','js','json','php'
)
$arcs = @(
'7z','apk','bz2','cbr','gz','gzip','jar','rar',
'tar','tgz','zip','war'
)
$scripts = @(
'bat','cmd','vb','vbs','vbe','js',
'jse','ws','wsf','wsc','wsh','ps1',
'ps1xml','ps2','ps2xml','psc1','psc2','sql'
)
$files = Get-ChildItem -Path $pathToUse
Foreach ($x in $files){
if($docs.Contains($x.Extension.TrimStart('.').ToLower())){
New-Item -ItemType Directory -Path $pathToUse -Name "Documents" -ErrorAction Ignore
Move-Item -Path $x.FullName -Destination $pathToUse/"Documents"
}
elseif($spreadsheets.Contains($x.Extension.TrimStart('.').ToLower())){
New-Item -ItemType Directory -Path $pathToUse -Name "Spreadsheets" -ErrorAction Ignore
Move-Item -Path $x.FullName -Destination $pathToUse/"Spreadsheets"
}
elseif($images.Contains($x.Extension.TrimStart('.').ToLower())){
New-Item -ItemType Directory -Path $pathToUse -Name "Images" -ErrorAction Ignore
Move-Item -Path $x.FullName -Destination $pathToUse/"Images"
}
elseif($presentations.Contains($x.Extension.TrimStart('.').ToLower())){
New-Item -ItemType Directory -Path $pathToUse -Name "Presentations" -ErrorAction Ignore
Move-Item -Path $x.FullName -Destination $pathToUse/"Presentations"
}
elseif($video.Contains($x.Extension.TrimStart('.').ToLower())){
New-Item -ItemType Directory -Path $pathToUse -Name "Videos" -ErrorAction Ignore
Move-Item -Path $x.FullName -Destination $pathToUse/"Videos"
}
elseif($cadFiles.Contains($x.Extension.TrimStart('.').ToLower())){
New-Item -ItemType Directory -Path $pathToUse -Name "CAD Files" -ErrorAction Ignore
Move-Item -Path $x.FullName -Destination $pathToUse/"CAD Files"
}
elseif($misc.Contains($x.Extension.TrimStart('.').ToLower())){
New-Item -ItemType Directory -Path $pathToUse -Name "Misc" -ErrorAction Ignore
Move-Item -Path $x.FullName -Destination $pathToUse/"Misc"
}
elseif($ebooks.Contains($x.Extension.TrimStart('.').ToLower())){
New-Item -ItemType Directory -Path $pathToUse -Name "E-Books" -ErrorAction Ignore
Move-Item -Path $x.FullName -Destination $pathToUse/"E-Books"
}
elseif($web.Contains($x.Extension.TrimStart('.').ToLower())){
New-Item -ItemType Directory -Path $pathToUse -Name "Web" -ErrorAction Ignore
Move-Item -Path $x.FullName -Destination $pathToUse/"Web"
}
elseif($arcs.Contains($x.Extension.TrimStart('.').ToLower())){
New-Item -ItemType Directory -Path $pathToUse -Name "Archives" -ErrorAction Ignore
Move-Item -Path $x.FullName -Destination $pathToUse/"Archives"
}
elseif($scripts.Contains($x.Extension.TrimStart('.').ToLower())){
New-Item -ItemType Directory -Path $pathToUse -Name "Scripts" -ErrorAction Ignore
Move-Item -Path $x.FullName -Destination $pathToUse/"Scripts"
}
elseif($x.Directory){
New-Item -ItemType Directory -Path $pathToUse -Name "Other - misc" -ErrorAction Ignore
Move-Item -Path $x.FullName -Destination $pathToUse/"Other - misc"
}
else{
Write-Host $x
}
}

Avec quelques petites modifications, vous pourrez ranger n'importe quel dossier sans efforts. Connaissez-vous d'autres scripts Powershell amusants ? Partagez-les dans les commentaires de cet article !



Abonnez-vous gratuitement à la newsletter
Chaque jour, le meilleur de Phonandroid dans votre boite mail !
Réagissez à cet article !
Demandez nos derniers tutos !
  • Ecran casse smartphone
    Comment récupérer vos fichiers personnels sur un smartphone cassé

    Vous venez de casser votre smartphone et l’écran ne fonctionne plus ? Pas de panique. Ne le jetez pas tout de suite à la poubelle. Il existe plusieurs méthode qui vont vous permettre de le contrôler à l’aide votre PC et de récupérer vos fichiers et données personnelles. Voici comment.

  • adobe pdf ecrire
    Comment écrire sur un fichier PDF ou remplir un formulaire ?

    Le PDF est le format le plus utilisé dans l’administratif. Mais comment remplir un formulaire efficacement, ou simplement écrire sur un PDF ? Suivez le guide ! Vous êtes déjà demandé pourquoi les PDF étaient aussi populaires dès qu’il s’agit…

  • microsoft outlook
    Outlook web : les 20 meilleures astuces pour mieux gérer votre boîte mail

    La version web d’Outlook regorge de fonctionnalités. Pas toujours bien connues des utilisateurs, elles permettent pourtant de gagner en productivité, de profiter d’une interface mieux adaptée à ses besoins et de réaliser des actions que l’on ne pensait pas forcément…

  • smartphone chauffe
    Comment éviter que votre smartphone surchauffe pendant la canicule

    Il peut parfois arriver qu’un smartphone surchauffe et les causes peuvent être multiples; Pourtant, le problème peut-être facilement évité. Voici quelques astuces à connaître absolument qui vont vous permettre d’éviter que votre smartphone n’atteigne une température trop excessive.

  • tiktok
    TikTok : comment activer le mode sombre

    TikTok dispose d’une interface assez sombre à la base. Mais certains recoins de l’application utilisent une apparence clair. Pour uniformiser le rendu sur l’ensemble de l’application, il faut activer le mode sombre. Mais TikTok a-t-il d’une telle option ? La…

  • RIO ne repond plus
    Numéro RIO : comment obtenir votre code pour changer d’opérateur

    Avec toutes les offres du marché, on a tendance à changer d’opérateur plus souvent qu’auparavant. Toutefois, un problème se pose, comment conserver son ancien numéro ? Voici comment obtenir le code RIO qui vous permettra de conserver la portabilité de votre numéro de téléphone.

  • whatsapp web pc
    Comment utiliser WhatsApp sur PC ou Mac

    Whatsapp est une application très populaire. Petit tutoriel pour pouvoir l’utiliser sur son ordinateur. Il existe une méthode officielle. On peut également émuler Android. Les deux méthodes ont quelques limites.

  • Amazon Prime Video
    Comment activer le contrôle parental sur Amazon Prime Video

    Prime Video dispose d’une bibliothèque très riche mais tous les contenus ne sont pas adaptés aux enfants. Pour éviter qu’ils ne tombent sur des vidéos réservées à un public adulte, vous pouvez activer le contrôle parental. Cette fonctionnalité va non…

  • disney plus
    Comment activer le contrôle parental sur Disney + Star étape par étape

    Star, la nouvelle rubrique de Disney+ lancée en février 2021, est à destination d’un public d’adultes. Grâce à la classification par âge des profils et à la mise en place d’un code PIN, vous pouvez activer le contrôle parental pour…

  • administration box internet
    192.168.1.1 : comment accéder à l’administration de votre box Internet ?

    Vous souhaitez modifier le mot de passe de votre Wi-Fi, changer de DNS ou encore vérifier s’il y a des intrus dans le réseau local ? Vous devrez accéder à l’interface d’administration de votre box internet. Quel que soit votre…