Phoneia

Comment automatiser Windows avec PowerShell

Français - March 13, 2016

Image 1. Comment automatiser Windows avec PowerShell

Apprendre à connaître PowerShell

Explorer les outils Windows plus avancés est une excellente façon de commencer à prendre le contrôle de votre PC. Renseignez-vous sur le Gestionnaire des tâches, par exemple, et vous serez bientôt en mesure de détecter, et surtout, fermer les processus défaillants qui pourraient ralentir votre ordinateur.

En se fondant sur les applets standards présente toutes sortes de problèmes, bien que. Vous devez les lancer manuellement chaque fois que vous voulez faire quelque chose. Ensuite, vous êtes obligé de travailler votre chemin à travers l’interface, peut-être choisir les mêmes paramètres et options, maintes et maintes fois. Et même après tout cela, l’applet pourrait ne pas faire exactement ce que vous avez besoin.

Heureusement, il y a une autre façon. PowerShell est un langage de script puissant qui vous permet de prendre le plein contrôle de tous les aspects de votre PC. Que vous ayez besoin de regarder les processus en cours d’exécution, de surveiller le système de fichiers, modifier le registre, le téléchargement de fichiers, analyser les pages Web, créer des rapports ou faire à peu près rien d’autre sur votre PC local ou tout autre système en réseau, PowerShell peut vous aider à faire le travail, aussi précisément que vous avez besoin, et aussi rapidement que possible.

De plus, alors qu’il peut parfois être compliqué, vous ne devez pas être un programmeur pour commencer l’apprentissage d’une quelques notions de base de script. En fait, si vous travaillez à la ligne de commande Windows, même occasionnellement, vous pourriez être l’exécution des tâches utiles dans PowerShell avec l’étude de seulement quelques minutes.

Invite de commandes

Pour lancer PowerShell, type ‘PowerShell’ dans la zone de recherche, puis cliquez-droit sur l’entrée Windows PowerShell et choisissez «Exécuter en tant qu’administrateur».

comme vous le verrez, l’interface PowerShell ressemble et se sent presque identique à la commande standard ligne. Et à bien des égards, cela est une bonne chose, parce que cela signifie que vous pouvez utiliser toutes les commandes que vous connaissez déjà.

Entrez DIR pour lister les fichiers dans un dossier, par exemple, cls pour effacer l’écran, ou IPCONFIG à votre liste de cartes réseau; tout fonctionne comme on pouvait s’y attendre.

Ce que vous obtenez, cependant, est de nombreuses nouvelles commandes – ou applets (prononcé ‘commande permet’) dans PowerShell-parler – et, heureusement, il y a une cmdlet de les énumérer tous. Type de get-commande et appuyez sur [Entrée] pour jeter un oeil.

Pour l’instant, ignorez les fonctions et ne regarder que les applets. Comme vous le verrez, cmdlets ont une structure claire verbe-nom nommage: Start-Process, Clear-EventLog, Get- ComputerRestorePoint, redémarrant l’ordinateur, et ainsi de suite. Cela les rend assez facile à comprendre, mais, bien sûr, vous aurez souvent besoin de plus de détails.

Entrée Mise à jour-Help pour télécharger et installer la documentation, puis utilisez le Get-Help cmdlet, comme celui-ci, pour en savoir un peu plus sur PowerShell:

Get-Help Start-Process

Service Get-Help

Get-Help horloge

La première ligne affiche une aide spécifique sur Start-Process; les deuxièmes listes cmdlets avec «service» dans le nom; et le troisième recherches juste le système d’aide pour tous les éléments contenant le mot «horloge» -. grande quand vous savez ce que vous voulez faire, mais juste n’êtes pas sûr cmdlet utiliser

requêtes rapides

Assez de la théorie; il est temps de faire un travail réel. Commençons par l’aide de PowerShell pour recueillir des données sur notre système, comme ceci:. Get-Process

Comme vous allez probablement deviner à partir du nom de cmdlet, cela devient une liste des processus en cours d’exécution sur votre système ( la même chose que vous verriez dans le Gestionnaire des tâches), et affiche leur CPU et RAM utilisation, ainsi que d’autres statistiques.

C’est déjà utile, et non pas quelque chose que vous pouvez faire facilement dans Windows seul, mais nous ne faisons que commencer. Ensuite, entrez ceci:

Get-Process | Where-Object CPU -gt 5

Comme précédemment, PowerShell est d’abord vérifier vos processus en cours. Le caractère de pipeline dit PowerShell de transmettre cette liste au cas où cmdlet. Et cette analyse dans la liste des processus, la recherche de tout ce qui correspond à la condition que nous avons mis – qu’il aurait dû utiliser plus de cinq secondes de temps CPU (-gt est supérieure; -ge est supérieur ou égal à; -lt est inférieure; -le est inférieur ou égal à)

Nous avons maintenant filtré notre liste initiale un peu, puis, mais il y a encore beaucoup à faire.. L’étape suivante consiste à saisir ceci:

Get-Process | Where-Object CPU -gt 5 | Sort-Object gère -descending

Nous sommes toujours aller chercher vos processus en cours et à choisir les porcs de CPU, mais maintenant PowerShell est aussi trier les processus restants par leur nombre de poignées (une mesure de combien de fichiers, blocs de mémoire et d’autres objets d’un processus a ouvert).

Encore une fois, ceci est juste un exemple, donc tordre; trier par CPU, par exemple, ou ProcessName (les en-têtes de colonne en haut de la liste Get-Process vous donnera une idée des noms que vous pouvez utiliser).

rapports puissants

Comme vous pouvez le voir, il y a beaucoup de façons de personnaliser et filtre quel que soit PowerShell retourne, mais il y a un problème: nous sommes toujours seulement d’obtenir des résultats en texte clair. Donc, essayez ceci:

Get-Process | Where-Object CPU -gt 5 | Sort-Object poignées -descending | Out-GridView

Maintenant PowerShell ne fait pas que filtrer et trier la liste; il affiche également les résultats dans un réseau interactif. Vous pouvez masquer, réorganiser ou trier les colonnes et filtrer vos données de différentes façons. Et une fois que vous êtes heureux, toutes les lignes sélectionnées peuvent être copiées dans le presse-papiers, prêt à l’aide de nulle part ailleurs.

Ce n’est pas mal pour une seule ligne de code et, bien sûr, vous pouvez avoir comme de lignes que vous avez besoin, mais il y a plus. Parce que cmdlets PowerShell fonctionnent de manière cohérente, vous pouvez prendre cet exemple et le réutiliser presque immédiatement. Jetez un oeil à ces exemples:

Get-WinEvent Système | Where-Object LevelDisplayName -eq “critique” | Out-GridView

Get-Service | état Where-Object -eq “running” | displayname Sort-Object | Out-GridView

Le premier obtient le contenu du journal système Windows, cherche des erreurs critiques et les affiche dans un tableau. Le second récupère nos services en cours d’exécution, encore une fois de les trier en fonction de nos besoins. Et ces deux exemples peuvent encore être modifié et personnalisé de plusieurs façons différentes.

Prenez le contrôle avec PowerShell

PowerShell fournit beaucoup de tri et les options de filtrage, puis, mais il est pas seulement une déclaration passive outil. Jetez un oeil à ceci:

Get-Service | Out-GridView -Title ‘Sélectionner un service pour redémarrer! -OutputMode Unique | Redémarrez-Service -WhatIf

Nous obtenons une liste de services installés, et les afficher avec un titre de fenêtre personnalisée comme une invite utilisateur. Le commutateur unique -OutputMode dit PowerShell que nous sommes autorisés à sélectionner un élément dans la liste. Si nous faisons cela, et cliquez sur ‘OK’, notre service choisi est passé le long du pipeline à la prochaine cmdlet, Start-Service, qui arrête et démarre pour nous, ce qui est très utile comme un moyen d’essayer de faire revivre tous les services qui se comportent mal.

Ou, au moins, il serait redémarrer le service si nous avions pas inclus le commutateur -WhatIf, qui indique PowerShell pour afficher simplement son action à la place. Ceci est une option de sécurité à portée de main, ce qui signifie que vous pouvez voir comment un cmdlet pourrait fonctionner sans risque de, dans ce cas, arrêter accidentellement un service qui devrait vraiment être laissé seul. Mais si vous voulez l’essayer pour de vrai, entrez le même cmdlet sans -WhatIf, et vous avez créé votre propre outil de service-redémarrage personnalisé.

Vous pouvez, bien sûr, faire quelque chose de similaire avec les processus, les services et tous les autres objets PowerShell peut manipuler. Mais même cela n’est pas la fin de l’histoire:

Get-Service -ComputerName MyPC | Out-GridView -OutputMode Simple | Redémarrez-Service -WhatIf

Cmdlets comme Get-Service et Get-Process ne se limitent pas à votre système local. Utilisez le commutateur -ComputerName avec le nom d’un ordinateur de réseau et que vous êtes en mesure de voir ce qu’il est en cours d’exécution, aussi (en supposant que votre compte d’utilisateur Windows a les privilèges pour y accéder). PowerShell peut alors gérer des systèmes distants, exactement de la même façon que votre propre PC.

PowerShell ISE

Jusqu’à présent, nous avons travaillé seulement dans la console PowerShell, la saisie des commandes, un par un et de voir les résultats tout de suite. Il est une autre façon d’exécuter du code, même si – dans le PowerShell Integrated Environment Scripting (ISE). Il est un peu plus complexe, mais beaucoup mieux lorsque vous souhaitez relier plusieurs cmdlets ensemble, ou de créer un code pour une réutilisation ultérieure. Lancez-le en recherchant PowerShell et en cliquant sur «Windows PowerShell ISE», entrant dans Powershell-ISE.exe dans la boîte de dialogue Exécuter, ou en entrant ISE sur la console PowerShell.

L’ISE ouvre avec une interface à deux volets. Sur la gauche est la console, où vous pouvez entrer des commandes PowerShell. Sur la droite est le Commandes Add-On, un outil pratique qui peut vous aider à construire des commandes avec la souris

processus de type dans la boîte de nom »les commandements. vous verrez différents cmdlets correspondants. Sélectionnez ‘Get-Process »pour voir ses paramètres, vous aider à comprendre ce que la cmdlet peut faire. Cliquez sur l’onglet ‘Nom’, par exemple, et vous trouverez une boîte de module. Qu’est-ce que cela fait? Vérifiez et cliquez sur “Exécuter”. Les commandes add-on construit le -Module cmdlet Get-Process, court dans la console, et affiche les résultats. – Une liste de tous vos processus, où chacun comprend ses modules chargés (DLL et d’autres fichiers de support)

Même si cela peut être utile, la console ISE a aussi quelques astuces supplémentaires pour accélérer votre codage PowerShell. Commencez à taper un cmdlet (essayez Get-Process à nouveau) et ISE affiche des correspondances possibles. Au moment où vous avez atteint Get-Pro, la bonne cmdlet doit être mis en évidence, et vous pouvez appuyer sur [Tab] pour entrer automatiquement les caractères restants.

Il est une histoire similaire en ce qui concerne l’entrée des paramètres. Appuyez sur la barre d’espace, puis un trait d’union, et ISE répertorie les différentes options Get-Process. Utilisez les touches de curseur pour faire défiler vers le bas, puis sélectionnez ‘-Module’, appuyez sur [Entrée] et encore, il est automatiquement ajouté à votre commande, aucune dactylographie requise.

Comme vous pouvez le voir, il y a plus à apprendre dans l’ISE, mais il ne fait également plus facile à explorer ce que PowerShell a à offrir. Maintenant, nous avons juste à l’utiliser pour construire un script.

Scripting

Cliquez sur «Afficher> Afficher volet de script ‘pour révéler le volet de script. Ceci est une zone séparée où vous pouvez entrer une chaîne de commandes, sur autant de lignes que nécessaire, sans les avoir exécutées immédiatement. Au lieu de cela, vous pouvez exécuter toutes les commandes dans le volet Script à tout moment en appuyant sur [F5] ou en cliquant sur “Debug> Run ‘.

Pour donner à ceci un essai, entrez les quatre commandes suivantes dans la fenêtre de script.

$ nom_ordinateur = read-host “Quel nom ordinateur voulez-vous vérifier?”

$ os = Get-WmiObject -Class Win32_OperatingSystem -ComputerName $ computername

$ LastBootUpTime = $ os.ConvertToDateTime

($ os.LastBootUpTime)

Write-sortie “temps $ computername dernière de démarrage était $ LastBootUpTime”

Ceci est un script simple, qui essaie de trouver la dernière heure de démarrage pour quel que soit l’ordinateur réseau que vous spécifiez. Bien que très court, il est beaucoup plus avancé que notre code précédent, et introduit plusieurs nouveaux concepts.

La première ligne, par exemple, utilise l’applet de commande de lecture-hôte pour afficher une invite, demandant à l’utilisateur d’entrer un Nom de l’ordinateur. Il est ensuite stocké dans une variable appelée $ computername.

La deuxième ligne utilise WMI pour récupérer le système d’exploitation pour l’ordinateur spécifié, tandis que le troisième obtient alors son temps de démarrage et le convertit en un format lisible. (Ne vous inquiétez pas sur les détails techniques ici, tout ce que vous avez vraiment besoin de se rappeler est que Get-WmiObject peut renvoyer des informations utiles sur la configuration de votre système.)

Enfin, la dernière cmdlet Write-sortie envoie un message à la console. Les variables seront remplacées par leurs valeurs réelles de sorte, par exemple, vous pourriez voir “temps MyServer dernière de démarrage était 10/06/2014 08:30”.

Appuyez sur [F5] pour lancer le script. Si vous pouvez accéder à un PC en réseau, entrez son nom, entrez autrement localhost ou juste une période pour vérifier le système local. Et voilà – votre premier script multi-ligne. Cliquez sur “Fichier> Enregistrer sous» et l’enregistrer comme C:. Scripts LastBootTime.ps1 (création du dossier, le cas échéant), prêt à être rappelé à chaque fois que vous le souhaitez

Notre script ISE de l’échantillon était très petite, mais les principes peuvent être utilisés pour exécuter ce que vous voulez. Visitez le Scripting Centre Microsoft – ou rechercher des scripts PowerShell – pour localiser d’autres exemples, les copier et les coller dans le volet de script, et appuyez sur [F5]

il y a encore un problème qui reste, cependant:.? comment pouvez-vous exécuter le script en dehors de PowerShell Double-cliquer sur il semble une solution évidente, mais essayez ceci et le fichier ouvre dans le Bloc-notes;. moins utile

Vous pouvez relancer PowerShell et entrez C:. Scripts LastBootTime.ps1 à la ligne de commande, mais ça ne marchera pas, soit vous ne verrez un message se plaignant que «en cours d’exécution scripts est désactivé sur ce système “Ceci est normal;.. les paramètres de sécurité par défaut imposent des limites strictes sur les scripts pour éviter leur abus par des logiciels malveillants

pour contourner ce problème, vous devez en savoir plus sur l’exécution de PowerShell. La politique Les cmdlets suivantes vous aideront à:

Get-ExecutionPolicy

Set-ExecutionPolicy RemoteSigned

La première ligne doit vous dire que votre stratégie est définie sur «restreinte», le blocage des scripts. Si oui, entrant dans la deuxième ligne définit la politique d’exécution à «RemoteSigned», à la place. Cela signifie que vos propres scripts exécuter immédiatement, mais tous les scripts que vous téléchargez devra être signé numériquement par un éditeur approuvé

Testez la nouvelle politique en entrant C:. Nouveau Scripts LastBootTime.ps1, et cela chronométrer votre script doit être exécuté. Si elle est trop grande difficulté à entrer dans le chemin d’accès complet à chaque fois, il suffit d’ajouter C: Scripts (ou quel que soit le dossier que vous choisissez pour vos scripts) à votre variable d’environnement PATH (appuyez sur [Win] + [X], cliquez sur «Système> Advanced System Paramètres> Variables d’environnement », double-cliquez sur ‘path’ dans ‘Variables système», puis ajouter un point-virgule et le dossier -;. C Scripts – à la fin de votre chemin)

Ce n ‘t tout à fait la fin de l’histoire. Le PowerShell bibliothèque a quelques détails utiles sur l’exécution de scripts, et il y a a astuce vous pouvez utiliser pour lancer des scripts à partir d’un de raccourci mais sinon, vous savez maintenant comment tester, écrire et exécuter du code PowerShell. Il est temps maintenant pour commencer quelques scripts sérieux.

trucs et astuces

édition plus rapide

Si vous avez besoin de réutiliser une commande PowerShell, ne perdez pas de temps PowerShell retapant. Appuyez sur [F7] pour afficher votre histoire récente, sélectionner une commande, appuyez sur [Entrée] pour l’exécuter, ou la flèche droite pour le placer sur la ligne de commande. Voir https://tinyurl.com/qyovam2 pour plus de raccourcis d’édition.

Utilisez les commentaires

Ajout de commentaires à vos scripts PowerShell va aider les autres à comprendre ce qu’ils font (ou d’agir comme un rappel pour toi). Tapez un caractère # et tout ce que vous entrez pour le reste de cette ligne sera traité comme un texte brut commentaire et non traité comme code.

Panneau de contrôle d’accès

PowerShell peuvent accéder à des composants Windows ainsi que des fichiers. Utilisez Get-ControlPanelItem pour obtenir une liste des applets du panneau de contrôle, et quelque chose comme Show-ControlPanelItem * Affichage * pour lancer un.

Enregistrer une session PowerShell

Revoir ce qui est arrivé dans un PowerShell session peut aider le processus d’apprentissage. Entrez le cmdlet Start-Transcript et toutes vos activités de la console (y compris toute sortie) sont enregistrées dans un fichier texte dans votre dossier Documents. Enter Stop-Transcript pour arrêter l’enregistrement.

téléchargements scriptées

Vous avez besoin de télécharger un fichier à partir d’un script? Ceci est le moyen facile (voir https://tinyurl.com/pdpvhdo pour quelque chose plus intelligent):

$ client = New-Object “System.Net.WebClient”

$ client .DownloadFile ( “https://domain.com/bigfile.zip”, “c: temp bigfile.zip”

Envoyer email

Vous n’avez pas le temps de tout ce que vos scripts font surveiller? vous pouvez les configurer pour vous envoyer un e-mail, à la place. Vérifiez la cmdlet Send-MailMessage pour un exemple de base, ou Peter Morrisey de Blog pour quelque chose de plus puissant.

Obtenir des exemples

Si vous n’êtes pas sûr de savoir comment utiliser une cmdlet, utilisez le Get-Help -examples passer, comme Get -Aide Invoke-WebRequest -examples, pour en savoir plus.

lecteur RSS

la cmdlet Invoke-RestMethod peut accéder au flux RSS de toute source de web et de le manipuler comme bon vous semble. Voici un moyen rapide de voir ce qui se passe dans PowerShell le blog de Microsoft:

Invoke-RestMethod -uri | Select-Object Titre, Link | Out-GridView

traiter les fichiers

pour traiter des fichiers texte, utilisez Get-Content pour les lire, manipuler le contenu comment vous voulez et utilisez Set-content pour enregistrer les modifications. Les erreurs peuvent entraîner une perte de données, même si -. Travaillons uniquement avec des copies de fichiers jusqu’à ce que vous êtes sûr que vous savez ce que vous faites

Exécuter des scripts automatiquement

Si vous devenez PowerShell maître, vous pouvez même configurer le Planificateur de tâches pour exécuter des scripts automatiquement, chaque fois que vous le souhaitez. Renseignez-vous sur le Nouveau-ScheduledTaskAction, New-ScheduledTaskTrigger et Inscrivez-TâchePlanifiée cmdlets et see ce blog pour un exemple.

Entrez les commandes PowerShell plus rapide

Ne perdez pas de temps à taper de longues commandes à la console PowerShell. Entrez quelques caractères (Get-Pr pour Get-Process, par exemple), continuez à appuyer sur l’onglet et les correspondances apparaissent. Ou utiliser un alias, une version plus courte du même texte; npssc fonctionne exactement de la même manière que New PSSessionConfigurationFile, par exemple.

Entrez Get-Alias ​​pour voir les alias, vous pouvez utiliser dès maintenant, et Set-Alias ​​pour créer votre propre.

Prolongez vos compétences

Pointez votre navigateur au Scripting Centre de Microsoft, et regarder dehors pour intéressante des exemples de scripts. Copiez et collez ceux-ci dans l’ISE, appuyez sur [F5] pour les essayer, puis lire le code et essayer de comprendre comment ils fonctionnent – il est un excellent moyen d’apprendre la langue


Techradar – Toutes les dernières technologies nouvelles