Publicité

Une première étape cruciale l'apprentissage de la programmation fonctionne avec des boucles Les bases absolues de la programmation pour les débutants (partie 2)Dans la partie 2 de notre guide de programmation pour débutants, je couvrirai les bases des fonctions, des valeurs de retour, des boucles et des conditions. Assurez-vous d'avoir lu la partie 1 avant d'aborder ce sujet, où j'ai expliqué le ... Lire la suite . Heureusement, PowerShell continue de croître avec vos compétences.

Vous pouvez encadrer les commandes existantes que vous utilisez tous les jours dans des boucles pour gagner du temps et des efforts. Vos scripts font le gros du travail pendant que vous effectuez l'important travail de lecture d'autres articles sur MakeUseOf!

Boucles Powershell ForEach: la porte vers une gestion avancée des données

ForEach est l'alias de ForEach-Object. (Un alias n'est qu'un raccourci pour une commande dans PowerShell.) C'est le bon moment pour parler de la façon dont PowerShell gère les données.

instagram viewer

Comme la plupart des langages de programmation modernes, PowerShell est orienté objet D'où la programmation «orientée objet» tire-t-elle son nom?Orienté objet n'est pas seulement un mot à la mode aléatoire que vous entendez dans les cercles de programmation. Il y a une raison derrière le nom - mais quoi? Rejoignez-moi alors que j'explore certains des principes fondamentaux des concepts de programmation et explique ... Lire la suite . Tout dans PowerShell est un objet, ce qui signifie que même les variables ont des propriétés et des fonctions étendues Applets de commande Powershell qui amélioreront vos compétences d'administrateur WindowsPowershell est un outil de ligne de commande à parts égales et un langage de script. Il vous donne la possibilité d'automatiser votre ordinateur via les mêmes commandes que vous utilisez pour l'administrer. Lire la suite . Cette propriété est la raison pour laquelle vous pouvez définir vos recherches sur une variable et vous retrouver avec un tableau des résultats.

$ yourVar = Get-ChildItem * foreach (fichier $ dans $ yourVar) {Vos étapes. }

Dans certaines langues, le traitement de ce tableau serait un processus en plusieurs étapes. Tout d'abord, obtenir la longueur, puis compter chaque étape.

Dans PowerShell, vous parcourez la baie et effectuez l'action sur chacun à l'aide de ForEach. Cela vous permet d'économiser plusieurs lignes de code, ce qui est utile si vous disposez d'un script plus long. Par exemple, ce qui suit est un petit script qui utiliserait quelques boucles Powershell ForEach. Il crée une archive ZIP de tous vos fichiers que vous n'avez pas ouverts depuis 30 jours.

Création d'un système d'archivage de fichiers à l'aide de boucles ForEach

Décomposons les étapes. Tu utilises Get-ChildItem pour obtenir tous les fichiers du dossier Documents. La variable d'environnement Quelles sont les variables d'environnement et comment puis-je les utiliser? [Les fenêtres]De temps en temps, j'apprends une petite astuce qui me fait penser "eh bien, si je savais qu'il y a un an, cela m'aurait fait gagner des heures". Je me souviens très bien d'avoir appris à ... Lire la suite $ env: USERPROFILE exécute le script en utilisant le profil actuel. Cette variable est plus portable qu'un chemin codé en dur. Les résultats de cette recherche sont affectés à la variable $ MyDocs. Nous créons ensuite notre boucle ForEach en la faisant parcourir chaque $ Doc dans $ MyDocs.

$ oldDocs = @ () $ MyDocs = Get-ChildItem -Path "$ ($ env: USERPROFILE) \ Documents" -Recurse. foreach ($ doc dans $ MyDocs) {if ($ doc. LastAccessTime -lt $ (Get-Date) .addDays (-30)) {$ oldDocs + = $ doc} } $ ArchiveFolder = New-Item -Path "$ ($ env: USERPROFILE) \ Documents \ $ ((Get-Date -Format MMddyy) .toString ())" -ItemType Directory. foreach ($ doc dans $ oldDocs) {Move-Item -Path $ doc. FullName -Destination "$ ($ ArchiveFolder. Nom complet) \ $ ($ doc. Nom) "-Confirmez $ false. } $ source = $ ArchiveFolder. Nom complet. $ destination = "$ ($ env: USERPROFILE) \ Documents \ $ ($ ArchiveFolder. Nom) .zip " Add-Type -AssemblyName "system.io.compression.filesystem" [io.compression.zipfile]:: CreateFromDirectory ($ source, $ destination) if (test-path $ destination) {Remove-Item -Path $ ArchiveFolder -Recurse -Confirm $ false. }

Dans la boucle, nous vérifions si chaque fichier est LastAccessTime la propriété a plus de 30 jours. Nous obtenons cela avec le Avoir un rendez-vous applet de commande et utilisation de la AddDays fonctionner avec trente négatives. Si c'est le cas, nous ajoutons le fichier au $ myOldDocs tableau. Une fois le tri du fichier terminé, nous prenons notre tableau terminé et créons un fichier zip. Ce processus est un peu plus compliqué car il implique l'invocation d'un peu de .NET. Ne vous inquiétez pas si vous ne le comprenez pas tout à fait - vous pouvez voler le code à ce document d'aide TechNet.

Pour décomposer ce qui se passe ici: nous déplacerons tous nos anciens fichiers vers un nouveau répertoire nommé pour la date d'aujourd'hui depuis plus de 30 jours. Une fois ce dossier construit, nous devons créer l'archive ZIP du même nom. Nous allons tester pour nous assurer que l'archive a réussi et que le fichier .ZIP est là, puis supprimer le nouveau dossier. Définissez-la comme une tâche planifiée à exécuter une fois par mois. Vous vous économiserez un peu d'espace et garderez votre dossier Documents propre.

While et Do While: boucles sous condition

Si vous souhaitez exécuter une boucle uniquement lorsqu'une condition particulière est remplie, vous utilisez une boucle While. Si vous utilisez une variable pour suivre le décompte, définissez-la d'abord.

i = 0. while (i <10) {Vos étapes i + = 1. }

Le problème est que si vous n'utilisez pas de compteur, vous souhaiterez peut-être que votre code s'exécute au moins une fois, même si le test est vrai. C'est le cas avec l'exemple de script ci-dessous. Donc, dans ces cas, vous souhaitez utiliser une boucle Do-While Fonctionnement des boucles Do-While en programmation informatiqueLes boucles sont l'un des premiers types de contrôle que vous apprendrez en programmation. Vous connaissez probablement les boucles while et for, mais qu'est-ce qu'une boucle do-while accomplit? Lire la suite . La syntaxe est légèrement différente.

faire {Vos étapes. } while (Déclaration conditionnelle)

Leur utilisation n'est pas aussi évidente pour un programmeur novice. En faisant des scripts typiques au jour le jour, vous ne les rencontrerez peut-être pas aussi souvent. Là où ils sont particulièrement utiles, c'est de créer une minuterie de fortune pour tester le succès d'un processus.

Nous allons créer un script rapide pour redémarrer une machine distante et alerter si elle ne revient pas dans les 15 minutes. Ce scénario suppose qu'il s'agit d'un serveur domestique ou d'une autre machine qui ne redémarre pas très souvent. N'hésitez pas à régler l'heure si votre ordinateur arrive généralement plus vite.

Redémarrage et vérification: utilisation d'une boucle Do-While

Ce script est un peu plus simple. Tout d'abord, vous utilisez le Redémarrer l'ordinateur pour redémarrer la machine distante. (Nous avons utilisé une adresse IP factice ici pour les commandes de redémarrage, assurez-vous de l'écraser avec le DNS / IP de votre ordinateur). Créez ensuite la variable de compteur, je et le mettre à 0. Ensuite, vous avez votre boucle Do avec Start-Sleep arrêtant le script pendant 300 secondes (cinq minutes). Une deuxième commande en ajoute une au compteur.

Restart-Computer -ComputerName 127.0.0.1. i = 0. faire {Start-Sleep -Seconds 300 $ i + = 1. } while ((! (Test-Connection 127.0.0.1 -Quiet)) -or $ i -gt 3) si ($ i -gt 3) {Write-Ouput "La machine distante ne répond pas, veuillez vérifier." } else {Write-Output "Reboot Succeeded" }

Ensuite, nous avons nos critères While. Nous utilisons un test Ou pour nous assurer qu'une défaillance génère une alerte. L'alternative est le script en boucle en attente sans fin de la machine distante. Pour vérifier la machine, nous utilisons le Test de connexion applet de commande. Pour plus de simplicité, il s'agit de Ping pour PowerShell. Nous ajoutons le paramètre -Silencieux ce qui l'oblige à retourner Vrai ou Faux plutôt que les résultats des paquets. La deuxième partie de l'instruction Or vérifie si le compteur est supérieur à trois.

Une fois la boucle terminée, nous voulons créer la sortie. Cela signifie que nous devons vérifier notre compteur. Il s'agit d'une instruction if / else rapide. S'il est supérieur à trois, le script indique que la machine distante ne répond pas. Si ce n'est pas le cas, il indique que le redémarrage a réussi.

Autres boucles

Il existe deux autres types de boucles disponibles dans PowerShell. Ils sont quelque peu liés aux deux boucles précédentes, ils ne sont tout simplement pas aussi couramment utilisés. Une boucle For fonctionne de manière similaire à l'exemple While. Vous définissez tous vos critères dans l'évaluation, puis définissez vos applets de commande.

for ($ i = 0; $ i -lt 10; $ i ++) {Vos étapes. }

Les boucles Do Until sont comme les boucles Do While, vous changez simplement l'instruction While en Until. Dans l'exemple de script, ce serait la même chose en ce qui concerne le comportement. C'est un choix de style, mais le Do While est plus polyvalent dans d'autres situations. Donc, si vous vous en souvenez, Do Do est plus utile.

boucles foreach PowerShell

PowerShell propose également de l'aide pour chacune de ces boucles. Vous pouvez obtenir de l'aide en ajoutant à propos avant le nom de la boucle dans Get-Help. Vous pouvez ensuite voir des exemples et d'autres conseils pour chaque type. Ceux-ci devraient être utiles si vous êtes coincé.

Continuer à grandir avec vous

À ce stade, vous avez la plupart des compétences pour commencer à créer des scripts robustes. Qu'il s'agisse automatiser votre installation à domicile 15 tâches avancées que PowerShell peut gérer dans Windows 10PowerShell est similaire à l'invite de commande, mais en mieux. C'est un puissant outil d'administration système. Nous avons compilé 15 tâches, certaines simples, d'autres complexes, qui bénéficient de la magie de PowerShell. Lire la suite ou pour gagner du temps au travail, les boucles aident vos scripts à en faire plus. Combiner ces boucles avec la gestion des erreurs déplace votre script au-delà des bases Gérez les erreurs PowerShell comme un boss avec ces conseilsLa gestion des erreurs PowerShell comprend quatre parties. Découvrez comment corriger les erreurs et plus encore dans Microsoft PowerShell. Lire la suite . Cela ouvre la porte à des langues plus avancées.

Qu'est-ce qu'un script PowerShell intelligent que vous avez créé à l'aide de boucles? Partagez-le avec nous dans les commentaires.

Michael n'a pas utilisé de Mac lorsqu'ils étaient condamnés, mais il peut coder en Applescript. Il est diplômé en informatique et en anglais; il écrit sur Mac, iOS et les jeux vidéo depuis un moment maintenant; et il est un singe informatique de jour depuis plus d'une décennie, spécialisé dans les scripts et la virtualisation.