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 !

Réagissez à cet article !
Abonnez-vous gratuitement à la newsletter
Chaque semaine, le meilleur de Phonandroid dans votre boite mail !
Demandez nos derniers tutos !
Alerte orage : comment protéger sa box internet de la foudre

Ce soir, de nombreux départements seront la cible d’une série d’orages qui risquent d’atteindre à l’intégrité de vos box internet. Découvrez comment protéger vos modems de ces intempéries. Quels sont les accessoires utiles ? Quelles sont les bonnes astuces ?

Comment réparer l’écran noir sur un smartphone Samsung Galaxy

Si vous avez un smartphone Samsung, vous avez peut-être déjà rencontré le problème de l’écran noir. Ce dernier s’allume mais l’écran reste noir. Le logiciel Dr.Fone de Wondershare permet de résoudre ce désagrément qui rend inutilisable votre Samsung Galaxy. On…

Airbnb : comment détecter les caméras espion avec votre smartphone

Régulièrement, il arrive que des locataires Airbnb découvrent la présence de caméras espion dans leur logement de vacances. Une pratique normalement interdite par les conditions générales d’Airbnb sauf lorsque cela est expressément communiqué au locataire. Il existe heureusement des astuces…

Comment supprimer votre historique Google automatiquement

Google permet désormais de programmer l’effacement de votre historique. Il devient ainsi possible de le supprimer automatiquement tous les trois mois ou tous les dix-huit mois. Une option bienvenue qui s’ajoute à celles permettant d’activer ou de désactiver complètement cet…

Chrome : comment activer le mode sombre sur Android

Google vient de doter Chrome pour Android d’un mode sombre (en bêta) disponible dans la dernière version stable de l’application. Il suffit pour cela simplement d’activer un « flag », puis d’activer l’option dans les réglages. Ce mode sombre change l’interface, mais…

WhatsApp : 9 trucs et astuces incontournables

WhatsApp est une application plutôt simple à utiliser pour rester en contact avec ses proches, partager des photos, vidéos et documents, ou encore passer des appels vidéo. Mais il est possible d’aller bien au delà du cadre d’utilisation classique pour…

Comment installer des extensions Google Chrome dans Microsoft Edge

La première bêta de Microsoft Edge sous Chromium est disponible. Or, qui dit Chromium dit accès aux extensions du Chrome Web Store, n’est-ce pas ? Par défaut, Microsoft Edge sous Chromium ne propose qu’une sélection limitée d’extensions approuvées par Microsoft….

Android : comment localiser un smartphone perdu

Android peut vous aider à retrouver un smartphone perdu sous plusieurs conditions : que votre smartphone soit allumé, connecté à la wifi ou en data, que compte Google soit correctement lié à l’appareil et que l’application Localiser mon appareil a…

Chrome : comment utiliser les extensions PC et Mac sur Android

Chrome est plus limité sur Android que sur PC et Mac, notamment à cause de l’absence d’extensions ? Kiwi Browser, un navigateur alternatif basé sur le même code source que Chrome, permet désormais de profiter de toutes vos extensions favorites…

Snapchat : comment shazamer des morceaux directement dans l’application

Snapchat comporte une fonctionnalité de reconnaissance de morceaux de musique, à l’image de la célèbre application Shazam. Cette fonctionnalité permet de reconnaître la musique qui se joue près de vous, de jouer et/ou de partager immédiatement le morceau, avec force…

WiFi : comment sécuriser le réseau de la maison

Les réseaux WiFi sont devenus la norme, mais posent un certain nombre de problèmes de sécurité : ils peuvent permettre à un intrus d’accéder à votre réseau personnel, aux machines qui y sont connectées, et à son trafic. Une personne…

Comment se désabonner de RMC Sport ?

Se désabonner de RMC Sport est plutôt simple – encore faut-il savoir où trouver l’option permettant de résilier son abonnement. Si vous ne regardez pas les chaines sportives du groupe Altice, il serait en effet peu avisé de continuer à payer les…

Spotify : comment supprimer définitivement votre compte

Si pour une raison ou une autre vous souhaitez supprimer définitivement votre compte Spotify, le processus est simple. Dans ce tutoriel, nous allons voir comment procéder pour fermer un compte Spotify en passant par la version web de l’application puisqu’il…

Comment partager Amazon Prime avec la famille et les amis

Il est possible de partager certains des avantages de votre abonnement Amazon Prime avec la famille et les amis, même si vous êtes pendant votre période d’essai.  Il y a bien sûr des conditions, et tout ne peut pas être…

Comment lire la musique de Spotify sur une enceinte Alexa

Vous avez une enceinte Echo avec Alexa et souhaitez lire de la musique à partir de Spotify ? Rien de plus simple ! Il suffit pour cela de lier votre compte Spotify avec l’application Alexa ou de connecter votre smartphone…

Comment rooter le Galaxy Note 9

Vous possédez un Samsung Galaxy Note 9 ? Une nouvelle méthode extrêmement simple existe si vous souhaitez le rooter, que ce soit pour personnaliser votre smartphone à l’extrême ou pour installer une ROM alternative comme LineageOS, Paranoid Android ou AOKP….