Qui ne souhaite pas être un sorcier et prononcer quelques mots pour que des choses magiques se produisent? Eh bien, nous ne pouvons pas vous montrer comment être un sorcier, mais nous pouvons vous montrer comment faire un peu de magie informatique.
Si vous utilisez un ordinateur Windows équipé de Windows 7, vous disposez de PowerShell. De même, si votre ordinateur est équipé de Windows 7, veuillez le mettre à jour pour des raisons de sécurité.
Mais cet article ne concerne pas que les utilisateurs de Windows. La dernière version de PowerShell est gratuite et peut être installée et utilisée sur les ordinateurs Mac et Linux.
Cela est important, car ce que vous apprenez sur PowerShell peut désormais être utilisé sur presque tous les ordinateurs. Qui sait? Vous pourriez faire progresser cette compétence au niveau supérieur et vous lancer dans une carrière dans les technologies de l'information.
Qu'est-ce que PowerShell?
La réponse de Microsoft à la haute technologie est qu'il s'agit d'un " … Shell en ligne de commande conçu spécialement pour les administrateurs système. »Cela semble intimidant. Mais ce n'est pas. Prenez-vous soin de votre ordinateur? Oui, alors vous êtes l’administrateur système de votre maison.
Dites-vous à votre ordinateur quoi faire avec les clics et les frappes? Oui, envisagez le shell de ligne de commande comme une autre fenêtre dans laquelle vous tapez des éléments pour indiquer à votre ordinateur quoi faire. Vous pouvez le faire.
In_content_1 all: [300x250] / dfp: [640x360]->PowerShell est comme un langage de programmation, mais pas aussi crypté que la plupart. Il se lit vraiment beaucoup comme l’anglais habituel, ce que Microsoft souhaitait pour que les non-programmeurs puissent le prendre.
C’est une façon d’écrire quelques lignes de commandes, appelées scripts, pour que le système d’exploitation Windows fasse quelque chose que vous voulez. Ensuite, vous pouvez enregistrer ces lignes dans un fichier et l'exécuter en un clic ou planifier son exécution périodique.
Que pouvez-vous faire avec PowerShell?
Le point de niveau supérieur de PowerShell doit pouvoir automatiser les tâches afin que vous ne perdiez pas votre temps à faire des choses banales à plusieurs reprises. Pour un administrateur système professionnel, cela pourrait être quelque chose comme la création de nouveaux utilisateurs, la génération de mots de passe pour eux et l'envoi d'un courrier électronique contenant les détails à leur nouveau superviseur.
Fait manuellement, avec des clics et en tapant, ce processus peut prendre 5 minutes à une heure ou plus. Avec les bons scripts, l'administrateur système ne sera peut-être même pas obligé de le faire.
Mais vous voulez savoir ce que vous pouvez faire avec PowerShell à la maison. Quasiment tout ce que vous n’aimez pas faire encore et encore. Utilisez-le pour libérer de l’espace sur votre disque dur en supprimant les fichiers de journal et temporaires dont vous n’avez pas besoin.
Mettez un couvre-feu sur l'ordinateur de votre enfant. Renommez ou organisez un tas de fichiers. C’est la beauté de PowerShell. Presque tout ce que vous pouvez faire sur votre ordinateur, vous pouvez créer un script PowerShell à automatiser et à exécuter en un clic ou selon un planning.
Comment utiliser PowerShell?
La manière la plus simple de travailler avec PowerShell consiste à utiliser Environnement de script intégré PowerShell. Vous pouvez le trouver en cliquant sur Démarrer et en tapant powershell isedans la barre de recherche de Windows 10. Vous devriez le voir comme ci-dessous.
Pour la première fois que nous l'utilisons, nous allons l'exécuter en tant qu'administrateur. Pour ce faire, vous devez d’abord disposer des droits d’administrateur sur votre ordinateur. Dans votre menu Démarrer, cliquez avec le bouton droit de la souris sur PowerShell ISE, puis cliquez sur Exécuter en tant qu'administrateur.
Vous pouvez obtenir un Avertissement: le contrôle UAC (UserAccess Control)(contextuel) vous demandant si vous êtes sûr de vouloir le faire. Cliquez sur Oui.
Maintenant, vous regardez l'EDI PowerShell. Le volet supérieur de la fenêtre (1)est le volet de script. C'est ici que vous écrirez votre script. Le volet inférieur de la fenêtre (2)représente la zone de la console. Lorsque vous testez votre script, la sortie s’affiche dans ce volet.
C’est également à cet endroit que vous verrez des messages d’erreur vous permettant de corriger et d’améliorer vos scripts. Le volet situé à droite de la fenêtre (3)est l’add-on de commande. Considérez-le comme un dictionnaire de toutes les commandes PowerShell disponibles.
PowerShell est configuré pour ne pas exécuter de script autre que celui faisant déjà partie de Windows. Vous devrez le modifier pour pouvoir exécuter vos propres scripts.
Dans la fenêtre de script, copiez et collez les éléments suivants:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
Le Set-ExecutionPolicys'appelle en partie une applet de commande (pronlet commandlet). Les cmdlets sont des choses puissantes. Considérez-les comme de courtes commandes que vous pouvez donner à Windows, et Windows ira faire un tas de choses plus compliquées pour satisfaire votre commande.
Une analogie serait de dire à votre enfant de nettoyer sa chambre. Court et au point. Si votre enfant connaît bien le nettoyage des chambres, il ira faire son lit, mettra son linge dans le panier, range ses jouets et ses livres et peut-être même aspirer le sol. Ils comprennent que la cmdlet Clean-YourRoom voulait dire tout cela.
En haut de la fenêtre, vous verrez une flèche verte. Cliquez dessus pour exécuter la commande.
La - ExecutionPolicyindique en partie à Set-ExecutionPolicyla stratégie à définir. C’est un paramètre. Il dit: «Je veux que vous respectiez ces directives et que vous le fassiez spécifiquement. Il lui dit d'utiliser la stratégie spécifique de RemoteSigned.
La stratégie RemoteSignedindique que PowerShell ne peut exécuter ou exécuter aucun script téléchargé à partir d'Internet s'il n'a pas été signé par un éditeur approuvé.
De manière détournée, il indique à PowerShell qu’il est judicieux d’exécuter un script créé localement, car il n’a pas besoin de le faire signer par un éditeur de confiance distant. Désormais, votre script PowerShell pourra exécuter n’importe quel script que vous écrivez sur votre ordinateur.
Examinons un script permettant de supprimer les fichiers temporaires. CCleaner n’est pas aussi puissant ni complet, mais CCleaner a son propre ensemble de problèmes.
Utilisez PowerShell pour créer de l’espace sur votre disque dur
Nous allons décomposer ce script, ligne par ligne, vous pouvez ainsi voir comment cela fonctionne. À la fin, le script sera entièrement affiché pour que vous puissiez le copier et le coller si vous le souhaitez.
$TempFileLocation = "C:\Users\username\Appdata\Local\Temp\*"
Tout ce qui est précédé du signe dollar est un nom de variable. . Pensez-y comme à un portefeuille dans lequel vous pouvez ranger des objets de valeur. Ce dernier nous rappelle le symbole du dollar. Les objets de valeur ont une valeur variable. Nous nous en souviendrons aussi. Nous créons un portefeuille ou une variable nommée $ TempFileLocation. Le signe égal indique à PowerShell ce qu'il faut mettre dans cette variable.
Dans ce cas, nous définissons l'emplacement de l'emplacement des fichiers temporaires de Windows - C: \ Utilisateurs \ nom d'utilisateur \ AppData \. Local \ Temp \ *. Nous faisons cela pour deux raisons: c'est un emplacement où il est toujours prudent de supprimer des fichiers, et nous allons l'utiliser pour indiquer à PowerShell où il doit aller pour supprimer les fichiers.
Où il est indiqué nom d'utilisateur dans thatlocation, échangez-le pour votre utilisateur. Nom. C’est le nom d’utilisateur que vous utilisez pour vous connecter à votre ordinateur. L'astérisque (*) à la fin de celui-ci est un joker. Ce que cela représente, c'est tout dans le dossier Temp, car tout dans le dossier Temp est temporaire et nous voulons le supprimer.
Les guillemets autour de l'emplacement sont également importants. Cela indique à PowerShell que ce qu’il contient est une chaîne. Pensez à chaîne comme une chaîne de lettres et de caractères. S'il s'agissait de nombres ordinaires, nous n'utiliserions pas les guillemets.
$TempFile = Get-ChildItem $TempFileLocation -Recurse
Nous sommes en train de créer une autre variable. Cette fois, nous allons utiliser une commande pour trouver quelque chose à mettre dans la variable $ TempFile.
Get-ChildItem
La remarque à propos des cmdlets telles que Get-ChildItemest qu’elle est totalement lisible. Voyez comment le premier mot est un verbe? Les cmdlets commencent toutes par des mots d’action, de sorte que vous savez immédiatement ce que cela fait. ChildItem est deux noms.
La deuxième partie de la cmdlet nous indiquera toujours à quoi PowerShell appliquera l'action. ChildItem désigne tous les enfants d'un emplacement parent. Cela revient à dire obtenir tous les fichiers d'un dossier, les fichiers étant les enfants et le dossier, le dossier parent.
En quoi la cmdlet récupère-t-elle les éléments enfants? Tout dans la variable $ TempFileLocation. PowerShell va se rendre à l'emplacement où nous avons précédemment placé $ TempFileLocation et obtenir tous les éléments enfants qui s'y trouvent. Ensuite, il les mettra dans la variable $ TempFile.
Alors, qu’en est-il de la partie -Recurse? Cela indique à Get-ChildItemde parcourir tout ce qui se trouve à cet endroit. Ne vous contentez pas d’obtenir les fichiers immédiatement dans le dossier parent. S'il y a des dossiers dans ce dossier, obtenez tous leurs enfants aussi, et leurs enfants et ainsi de suite. Nous allons les avoir tous.
$TempFileCount = ($TempFile).count
Oui, nous créons une troisième variable appelée $ TempFileCount, et nous allons mettre un nombre dans cette variable. Où est le numéro? Eh bien, $ TempFile) .countva nous fournir ce nombre. Vous avez probablement déjà compris que la partie .count effectuera le comptage de tous les fichiers que nous venons de stocker dans $ TempFile.
Pourquoi avons-nous fait cela? Principalement parce qu'il est agréable de savoir combien de fichiers inutiles nous nettoyons avec le reste du script afin que nous puissions évaluer son efficacité.
if($TempFileCount -eq 0)
Nous sommes maintenant en train de définir une déclaration conditionnelle. Vous pouvez voir qu’il demande «si». Si quoi? Si la chose entre parenthèses est vraie ou fausse. Les parenthèses sont importantes, sinon le Si ne sait pas quoi comparer. Ici, il est demandé si le nombre que nous avons stocké dans $ TempFileCountest égal à zéro.
Le -eqest le raccourci pour égaux. C’est un type d’opérateur de comparaison. C'est comme si vous disiez à vos enfants: "Si votre chambre est propre, c'est bien, nous allons faire quelque chose ..." Cette phrase indique que si le nombre stocké dans $ TempFileCount est égal à zéro, effectuez la prochaine étape.
{Write-Host "There are no files in the folder $TempFileLocation" -ForegroundColor Green}
C'est ce qui se produira si $ TempFileCountest égal à zéro. Les accolades sont importantes. Ils disent à PowerShell de ne faire que ce qui est à l'intérieur d'eux si $ TempFileCount est égal à zéro.
Il écrira sur l'hôte ou sur l'écran "Il n'y a aucun fichier dans le dossier C: \ Utilisateurs \ nom d'utilisateur \ Appdata \ Local \ Temp \ *". Le paramètre à la fin, ForegroundColorindique à PowerShell de rendre le texte vert. Cela facilite simplement la distinction avec un message d'erreur qui est normalement rouge.
Else
Vous savez quoi d'autre. Voici comment vous devez vérifier si votre enfant a bien nettoyé sa chambre. C’est ce qui se produira si $ TempFileCountn’est pas égal à zéro.
{$TempFile | Remove-Item -WhatIf -Confirm:$false -Recurse -Force -WarningAction SilentlyContinue -ErrorAction SilentlyContinue}
Cela signifie aller à l’emplacement actuel stocké dans $ TempFileLa ligne verticale qui suit est appelée un tuyau. Il fonctionne un peu comme un tuyau réel dans la mesure où il indique à PowerShell de canaliser le contenu de $ TempFile dans la cmdlet, comme s'il s'agissait d'eau acheminée dans une machine à laver. Ensuite, la cmdlet Remove-Itemfait ce qu'elle dit. il supprime tout ce qui se trouve à cet endroit.
Le paramètre -WhatIfest très important à ce stade. Il demande à PowerShell d’exécuter la commande, mais uniquement de l’essayer, sans rien supprimer. Il suffit de nous montrer ce qui se passerait si nous le faisions vraiment.
Ceci vous permet de tester des commandes sans rien changer sur votre ordinateur. Laissez le -WhatIf là-bas jusqu'à ce que vous soyez à l'aise que le script va faire ce que vous voulez, et rien d'autre. Ensuite, supprimez simplement cette sortie et le script fera son travail.
Le paramètre -Confirm: $ falseempêche le script de vous demander si vous souhaitez réellement supprimer le fichier. Vous savez ce que -Recursefait. -Forcesignifie supprimer cette chose, quoi qu'il arrive. -WarningActionest défini sur SilentlyContinue.
Cela empêche le script de vous avertir de ce que vous supprimez. -ErrorActionest défini sur SilentlyContinue. Ainsi, s'il y a une quelconque erreur dans le processus, il continue de suivre.
Nous en sommes maintenant à la page suivante. la dernière ligne.
Write-Host "Cleared $TempFileCount files in the folder $TempFileLocation" -ForegroundColor Green}
Comme Write-Hostl'a fait la première fois, il va afficher la phrase suivante, nous savons donc ce qui s'est passé . Il nous dira combien de fichiers ont été supprimés du dossier qu’il vient de traiter et le fera en vert pour le repérer facilement.
Regardons le script dans son ensemble:
$TempFileLocation = "C:\Users\guymcd\Appdata\Local\Temp\*"
$TempFile = Get-ChildItem $TempFileLocation -Recurse
$TempFileCount = ($TempFile).count
if($TempFileCount -eq "0") {
Write-Host "There are no files in the folder $TempFileLocation" - ForegroundColor Green
}
Else {
$TempFile | Remove-Item -Confirm:$false -Recurse -Force -WarningAction SilentlyContinue -ErrorAction SilentlyContinue
Write-Host "Cleared $TempFileCount files in the folder $TempFileLocation" -ForegroundColor Green
}
Vous pouvez copier et coller ceci dans votre ISE PowerShell et l'enregistrer sous quelque chose comme delete-TemporaryFiles.ps1. Vous pouvez aussi vous en tenir à la convention de nommage des applets de commande maintenant que vous les comprenez.
Si le code ne fonctionne pas pour vous pour une raison quelconque, vous pouvez également télécharger le script PowerShell que nous avons créé et il suffit de le lancer. Décompressez-le d'abord pour afficher le fichier de script.
Chaque fois que vous souhaitez exécuter ce script, faites un clic droit dessus et choisissez Exécuter avec PowerShell. Une console PowerShell apparaîtra pendant une seconde ou deux, pendant que votre script remplit son rôle, puis disparaîtra s'il n'y a pas d'erreur.
Où puis-je en savoir plus sur PowerShell?
Cela semble beaucoup! Pour votre premier script PowerShell, c'est un peu juste. Si vous avez atteint ce stade, applaudissez-vous. Vous avez beaucoup appris aujourd'hui, mais vous voulez maintenant en apprendre davantage. C'est génial!
Internet offre de nombreuses ressources pour en savoir plus sur PowerShell. Notre article intitulé «Générer une liste de programmes de démarrage via la ligne de commande ou PowerShell » constitue un bon point de départ. Puis consultez ces autres ressources: