Geek School Apprenez à automatiser Windows avec PowerShell
Dans cette édition de Geek School, nous vous aiderons à comprendre le puissant langage de script PowerShell intégré à Windows et extrêmement utile à connaître dans un environnement informatique..
Bien que cette série ne soit pas structurée autour d’un examen, l’apprentissage de PowerShell est l’une des choses les plus importantes que vous puissiez faire en tant qu’administrateur réseau. Si vous souhaitez en apprendre un autre pour vous aider dans votre carrière informatique, c’est ce qu’il vous faut. De plus, c'est très amusant.
introduction
PowerShell est l’outil d’automatisation le plus puissant que Microsoft puisse offrir. Il est à la fois un shell et un langage de script..
Notez que cette série est basée sur PowerShell 3, livré avec Windows 8 et Server 2012. Si vous utilisez Windows 7, veuillez télécharger la mise à jour de PowerShell 3 avant de continuer..
Rencontrez la console et l'ISE
Il existe deux manières d'interagir avec PowerShell, la console et l'environnement de script intégré, également appelé ISE. L'ISE s'est considérablement amélioré par rapport à la version hideuse livrée avec PowerShell 2 et peut être ouvert en appuyant sur la combinaison de touches Win + R pour afficher une boîte d'exécution, puis en tapant powershell_ise et en appuyant sur Entrée..
Comme vous pouvez le voir, l'ISE affiche une vue fractionnée afin que vous puissiez écrire rapidement un script tout en pouvant afficher le résultat dans la moitié inférieure de l'ISE. La moitié inférieure de l'ISE, où les résultats de votre script sont imprimés, peut également être utilisée en tant qu'invite REPL - un peu comme une invite de commande. La v3 ISE a finalement ajouté la prise en charge d’intelliSense dans le volet de script ainsi que dans la console interactive..
Sinon, vous pouvez interagir avec PowerShell à l'aide de la console PowerShell, ce que j'utiliserai pour la plupart de cette série. La console PowerShell se comporte comme l’invite de commande: vous saisissez simplement des commandes et les résultats sont affichés. Pour ouvrir la console Windows PowerShell, appuyez à nouveau sur la combinaison de touches Win + R pour ouvrir une boîte d'exécution et tapez powershell, puis appuyez sur Entrée..
Les invites REPL comme celle-ci sont géniales pour la gratification instantanée: vous entrez une commande et vous obtenez des résultats. Bien que la console n'offre pas intellisense, elle propose quelque chose appelé «complétion par onglets» qui fonctionne à peu près de la même manière: il suffit de commencer à taper une commande et d'appuyer sur tab pour faire défiler les correspondances possibles..
Utiliser le système d'aide
Dans les versions précédentes de PowerShell, des fichiers d’aide étaient inclus lors de l’installation de Windows. C’était une bonne solution pour la plupart mais nous laissait un problème important. Lorsque l'équipe d'aide de PowerShell a dû cesser de travailler sur les fichiers d'aide, les développeurs de PowerShell étaient toujours en train de coder et d'apporter des modifications. Cela signifiait que lors de la livraison de PowerShell, les fichiers d'aide étaient incorrects, car ils ne contenaient pas les modifications les plus récentes apportées au code. Pour résoudre ce problème, PowerShell 3 ne contient aucun fichier d’aide et comprend un système d’aide pouvant être mis à jour. Cela signifie que, avant de faire quoi que ce soit, vous voudrez télécharger les derniers fichiers d'aide. Vous pouvez le faire en ouvrant une console PowerShell et en exécutant:
Aide de mise à jour
Félicitations pour l’exécution de votre première commande PowerShell! La vérité est que la commande Update-Help a beaucoup plus d'options que de simplement l'exécuter, et pour les voir, nous voudrons voir l'aide de la commande. Pour afficher l'aide relative à une commande, il vous suffit de passer le nom de la commande pour laquelle vous souhaitez une aide au paramètre Name de la commande Get-Help, par exemple:
Get-Help -Name Update-Help
Vous vous demandez probablement comment interpréter tout ce texte de toute façon. Je veux dire, pourquoi la base de syntaxe contient-elle beaucoup d’informations et pourquoi y at-il autant de crochets? Tout d'abord, la section syntaxe contient deux blocs d'informations, car ils représentent différentes façons d'exécuter la commande. Ils sont techniquement appelés jeux de paramètres et vous ne pouvez en utiliser qu'un à la fois (vous ne pouvez pas mélanger les paramètres de différents jeux). Dans la capture d'écran ci-dessus, vous pouvez voir que le jeu de paramètres supérieur a un paramètre SourcePath alors que le fond n'a pas. La raison en est que vous utiliseriez le jeu de paramètres top (celui qui inclut SourcePath) si vous mettiez à jour vos fichiers d’aide à partir d’un autre ordinateur de votre réseau qui les avait déjà téléchargés, alors que vous n’auriez pas besoin de spécifier un chemin source. je voulais juste récupérer les derniers fichiers de Microsoft.
Pour répondre à la deuxième question, il existe une certaine syntaxe suivie par les fichiers d’aide:
- Les crochets entourant un nom de paramètre et son type indiquent qu'il s'agit d'un paramètre facultatif et que la commande fonctionnera parfaitement sans lui..
- Les crochets autour du nom du paramètre signifient que le paramètre est un paramètre de position.
- La chose à la droite d'un paramètre dans les parenthèses angulaires vous indique le type de données que le paramètre attend..
Bien que vous deviez apprendre à lire la syntaxe du fichier d’aide, si vous avez des doutes sur un paramètre en particulier, ajoutez simplement -Full à la fin de votre commande get help et faites défiler jusqu’à la section parameters, où il vous en dira un peu plus sur chaque paramètre. paramètre.
Get-Help -Name Update-Help -Full
La dernière chose que vous devez savoir sur le système d’aide est de savoir comment vous en servir pour découvrir les commandes, ce qui est en réalité très simple. Vous voyez, PowerShell accepte les caractères génériques presque n'importe où, aussi leur utilisation avec la commande Get-Help vous permet de découvrir facilement les commandes. Par exemple, je recherche des commandes concernant les services Windows:
Get-Help -Name * service *
Bien sûr, toute cette information n’est peut-être pas très utile, mais croyez-moi, prenez le temps et apprenez à utiliser le système d’aide. Il est utile tout le temps, même pour les scénaristes avancés qui le font depuis des années.
Sécurité
Ce ne serait pas une bonne introduction sans mentionner la sécurité. Le principal souci de l’équipe de PowerShell est que PowerShell devienne le dernier et le plus important point d’attaque pour les script kiddies. Ils ont mis en place quelques mesures de sécurité pour s'assurer que cela ne se produise pas, alors jetons-y un coup d'œil..
La forme de protection la plus élémentaire provient du fait que l’extension de fichier PS1 (utilisée pour désigner un script PowerShell) n’est pas enregistrée auprès d’un hôte PowerShell, mais bien enregistrée avec le Bloc-notes. Cela signifie que si vous double-cliquez sur un fichier, celui-ci s’ouvrira avec le bloc-notes au lieu de fonctionner..
Deuxièmement, vous ne pouvez pas exécuter de scripts à partir du shell en tapant simplement le nom du script, vous devez spécifier le chemin complet du script. Donc, si vous voulez exécuter un script sur votre lecteur C, vous devez taper:
C: \ runme.ps1
Ou, si vous êtes déjà à la racine du lecteur C, vous pouvez utiliser les éléments suivants:
.\ runme.ps1
Enfin, PowerShell a quelque chose appelé Stratégies d'exécution, qui vous empêche d'exécuter n'importe quel ancien script. En fait, par défaut, vous ne pouvez exécuter aucun script et vous devez modifier votre stratégie d'exécution si vous souhaitez être autorisé à les exécuter. Il existe 4 règles d’exécution remarquables:
- Limité: Il s'agit de la configuration par défaut dans PowerShell. Ce paramètre signifie qu'aucun script ne peut être exécuté, quelle que soit sa signature. La seule chose qui peut être exécutée dans PowerShell avec ce paramètre est une commande individuelle..
- AllSigned: Ce paramètre autorise l'exécution de scripts dans PowerShell. Le script doit avoir une signature numérique associée provenant d'un éditeur de confiance. Il y aura une invite avant d'exécuter les scripts d'éditeurs approuvés..
- RemoteSignedRemarque: Ce paramètre autorise l'exécution de scripts, mais requiert que le script et les fichiers de configuration téléchargés à partir d'Internet soient associés à une signature numérique provenant d'un éditeur approuvé. Les scripts exécutés à partir de l'ordinateur local n'ont pas besoin d'être signés. Il n'y a pas d'invite avant d'exécuter le script.
- Libre: Cela permet l'exécution de scripts non signés, y compris tous les scripts et les fichiers de configuration téléchargés depuis Internet. Cela inclura les fichiers d'Outlook et de Messenger. Le risque ici est d’exécuter des scripts sans signature ni sécurité. Nous avons recommencé que vous ne nous jamais ce réglage.
Pour voir comment votre stratégie d'exécution actuelle est définie, ouvrez une console PowerShell et tapez:
Get-ExecutionPolicy
Pour ce cours et la plupart des autres circonstances, la stratégie RemoteSigned est la meilleure, alors n'hésitez plus et changez votre stratégie à l'aide de ce qui suit.
Remarque: cette opération doit être effectuée à partir d’une console PowerShell élevée..
Set-ExecutionPolicy RemoteSigned
C'est tout pour cette fois, à demain pour un peu plus de plaisir avec PowerShell.
Clause de non-responsabilité: le terme approprié pour une commande PowerShell est une applet de commande et nous utiliserons désormais cette terminologie correcte. Il a semblé juste plus approprié de les appeler des commandes pour cette introduction.
Si vous avez des questions, vous pouvez me tweeter @taybgibb ou laisser un commentaire..