Qu'est-ce que Windows PowerShell et avec quoi est-il consommé ? Partie 1 : Fonctionnalités clés

Historiquement, les utilitaires de ligne de commande sur les systèmes Unix sont mieux développés que sur Windows, mais avec l'avènement d'une nouvelle solution, la situation a changé.

Windows PowerShell permet aux administrateurs système d'automatiser la plupart des tâches de routine. Avec lui, vous pouvez modifier les paramètres, arrêter et démarrer les services, et également effectuer la maintenance sur la plupart des applications installées. Il serait faux de percevoir la fenêtre bleue comme un autre interpréteur de commandes. Cette approche ne reflète pas l'essence des innovations proposées par Microsoft. En fait, les possibilités de Windows PowerShell sont beaucoup plus larges : dans une courte série d'articles, nous allons essayer de comprendre en quoi la solution Microsoft diffère des outils que nous connaissons mieux.

Qu'est-ce que Windows PowerShell et avec quoi est-il consommé ? Partie 1 : Fonctionnalités clés

Caractéristiques principales 

Bien sûr, Windows PowerShell est avant tout un shell de script, construit à l'origine sur .NET Framework et plus tard sur .NET Core. Contrairement aux shells qui acceptent et renvoient des données texte, Windows PowerShell fonctionne avec des classes .NET qui ont des propriétés et des méthodes. PowerShell vous permet d'exécuter des commandes courantes et vous donne également accès aux objets COM, WMI et ADSI. Il utilise divers stockages, tels que le système de fichiers ou le registre Windows, pour l'accès à ce que l'on appelle. fournisseurs. Il convient de noter la possibilité d'intégrer des composants exécutables PowerShell dans d'autres applications pour implémenter diverses opérations, incl. via une interface graphique. L'inverse est également vrai : de nombreuses applications Windows permettent d'accéder à leurs interfaces de gestion via PowerShell. 

Windows PowerShell vous permet de :

  • Modifier les paramètres du système d'exploitation ;
  • Gérer les services et les processus ;
  • Configurer les rôles et les composants du serveur ;
  • Installer le logiciel;
  • Gérer les logiciels installés via des interfaces spéciales ;
  • Intégrer des composants exécutables dans des programmes tiers ;
  • Créer des scripts pour automatiser les tâches d'administration ;
  • Travailler avec le système de fichiers, le registre Windows, le magasin de certificats, etc.

Shell et environnement de développement

Il existe Windows PowerShell sous deux formes : en plus de l'émulateur de console avec un shell de commande, il existe un environnement de script intégré (ISE). Pour accéder à l'interface de ligne de commande, sélectionnez simplement le raccourci approprié dans le menu Windows ou exécutez powershell.exe dans le menu Exécuter. Une fenêtre bleue apparaîtra à l'écran, sensiblement différente dans les capacités de l'antédiluvien cmd.exe. Il existe une saisie semi-automatique et d'autres fonctionnalités familières aux utilisateurs de shells de commande pour les systèmes Unix.

Qu'est-ce que Windows PowerShell et avec quoi est-il consommé ? Partie 1 : Fonctionnalités clés

Pour travailler avec le shell, vous devez vous souvenir de certains raccourcis clavier :

  • Les flèches haut et bas font défiler l'historique pour répéter les commandes saisies précédemment ;
  • La flèche droite en fin de ligne retape la commande précédente caractère par caractère ;
  • Ctrl+Origine supprime le texte tapé de la position du curseur jusqu'au début de la ligne ;
  • Ctrl+Fin supprime le texte du curseur jusqu'à la fin de la ligne.

F7 affiche une fenêtre avec des commandes saisies et vous permet de sélectionner l'une d'entre elles. La console fonctionne également avec la sélection de texte à la souris, le copier-coller, le positionnement du curseur, la suppression, le retour arrière - tout ce que nous aimons.

Qu'est-ce que Windows PowerShell et avec quoi est-il consommé ? Partie 1 : Fonctionnalités clés
Windows PowerShell ISE est un environnement de développement complet avec un éditeur de code à onglets et à syntaxe mise en évidence, un générateur de commandes, un débogueur intégré et d'autres plaisirs de programmation. Si vous écrivez un trait d'union après le nom de la commande dans l'éditeur d'environnement de développement, vous obtiendrez toutes les options disponibles dans la liste déroulante avec une indication du type. Vous pouvez lancer PowerShell ISE soit via un raccourci depuis le menu système, soit en utilisant le fichier exécutable powershell_ise.exe.

Qu'est-ce que Windows PowerShell et avec quoi est-il consommé ? Partie 1 : Fonctionnalités clés

Applets de commande 

Dans Windows PowerShell, le soi-disant. applets de commande. Ce sont des classes .NET spécialisées qui fournissent une variété de fonctionnalités. Ils sont nommés Action-Object (ou Verb-Noun, si vous préférez), et le lien séparé par un trait d'union ressemble au prédicat et au sujet dans les phrases en langage naturel. Par exemple, Get-Help signifie littéralement "Get-Help", ou dans un contexte PowerShell : "Show-Help". En fait, il s'agit d'un analogue de la commande man dans les systèmes Unix, et les manuels dans PowerShell doivent être demandés de cette manière, et non en appelant des applets de commande avec la touche --help ou /?.N'oubliez pas la documentation en ligne de PowerShell : Microsoft l'a assez détaillé.

En plus de Get, les applets de commande utilisent d'autres verbes pour désigner des actions (et pas seulement des verbes à proprement parler). Dans la liste ci-dessous, nous donnons quelques exemples :

Add - ajouter;
Clear - clair;
Enable - allumer;
Disable - éteindre;
New - créer;
Remove - supprimer;
Set - demander;
Start - courir;
Stop - arrêt;
Export - exporter;
Import - importer.

Il existe des applets de commande système, utilisateur et facultatives : à la suite de leur exécution, elles renvoient toutes un objet ou un tableau d'objets. Ils ne sont pas sensibles à la casse, c'est-à-dire du point de vue de l'interpréteur de commandes, il n'y a pas de différence entre Get-Help et get-help. Le caractère ';' est utilisé pour la séparation, mais il est obligatoire de le mettre uniquement si plusieurs applets de commande sont exécutées sur la même ligne. 

Les applets de commande Windows PowerShell sont regroupées en modules (NetTCPIP, Hyper-V, etc.), et il existe une applet de commande Get-Command pour rechercher par objet et action. Vous pouvez afficher l'aide comme ceci :

Get-Help Get-Command

Qu'est-ce que Windows PowerShell et avec quoi est-il consommé ? Partie 1 : Fonctionnalités clés

Par défaut, la commande affiche une brève aide, mais les paramètres (arguments) sont transmis aux applets de commande selon les besoins. Avec leur aide, vous pouvez par exemple obtenir une aide détaillée (paramètre -Detailed) ou complète (paramètre -Full), ainsi que des exemples d'affichage (paramètre -Examples) :

Get-Help Get-Command -Examples

L'aide de Windows PowerShell est mise à jour par l'applet de commande Update-Help. Si la ligne de commande s'avère trop longue, les arguments de l'applet de commande peuvent être déplacés vers le suivant en écrivant le caractère de service '`' et en appuyant sur Entrée - le simple fait de terminer d'écrire la commande sur une ligne et de continuer sur une autre ne fonctionnera pas.

Voici quelques exemples d'applet de commande courantes : 

Get-Process - afficher les processus en cours d'exécution dans le système ;
Get-Service — afficher les services et leur statut ;
Get-Content - afficher le contenu du fichier.

Pour les applets de commande et les utilitaires externes fréquemment utilisés, Windows PowerShell a des synonymes courts - alias (de l'anglais. Alias). Par exemple, dir est un alias pour Get-ChildItem. La liste des synonymes comprend également des analogues de commandes des systèmes Unix (ls, ps, etc.), et l'applet de commande Get-Help est appelée par la commande help. Une liste complète des synonymes peut être consultée à l'aide de l'applet de commande Get-Alias :

Qu'est-ce que Windows PowerShell et avec quoi est-il consommé ? Partie 1 : Fonctionnalités clés

Scripts, fonctions, modules et langage PowerShell

Les scripts Windows PowerShell sont stockés sous forme de fichiers texte brut avec une extension .ps1. Vous ne pouvez pas les lancer en double-cliquant : vous devez faire un clic droit pour appeler le menu contextuel et sélectionner l'élément « Exécuter dans PowerShell ». Depuis la console, vous devrez soit spécifier le chemin complet du script, soit aller dans le répertoire approprié et écrire le nom du fichier. L'exécution de scripts est également limitée par la stratégie système, et pour vérifier les paramètres actuels, vous pouvez utiliser l'applet de commande Get-ExecutionPolicy, qui renverra l'une des valeurs suivantes :

Restricted — le lancement des scripts est désactivé (par défaut) ;
AllSigned - seul le lancement de scripts signés par un développeur de confiance est autorisé ;
RemoteSigned - autorisé à exécuter des scripts signés et propres ;
Unrestricted - autorisé à exécuter tous les scripts.

L'administrateur a deux options. Le plus sûr consiste à signer des scripts, mais c'est une sorcellerie assez sérieuse - nous en parlerons dans de futurs articles. Prenons maintenant le chemin de moindre résistance et changeons de politique :

Set-ExecutionPolicy RemoteSigned

Qu'est-ce que Windows PowerShell et avec quoi est-il consommé ? Partie 1 : Fonctionnalités clés
PowerShell devra être exécuté en tant qu'administrateur pour ce faire, bien que vous puissiez modifier la stratégie de l'utilisateur actuel avec un paramètre spécial.

Les scripts sont écrits dans un langage de programmation orienté objet, dont les commandes sont nommées selon le même principe que les cmdlets considérés précédemment : "Action-Object" ("Verb-Noun"). Son objectif principal est d'automatiser les tâches administratives, mais c'est un langage interprété à part entière qui possède toutes les constructions nécessaires : saut conditionnel, boucles, variables, tableaux, objets, gestion des erreurs, etc. N'importe quel éditeur de texte convient aux scripts, mais il est préférable d'exécuter Windows PowerShell ISE.

Vous pouvez transmettre des paramètres au script, les rendre obligatoires et définir des valeurs par défaut. De plus, Windows PowerShell vous permet de créer et d'appeler des fonctions de la même manière que les applets de commande, en utilisant la construction Function et les accolades. Un script avec des fonctions est appelé un module et a une extension .psm1. Les modules doivent être stockés dans des répertoires définis dans les variables d'environnement PowerShell. Vous pouvez les afficher avec la commande suivante :

Get-ChildItem Env:PSModulePath | Format-Table -AutoSize

Convoyeurs

Dans le dernier exemple, nous avons utilisé une construction familière aux utilisateurs du shell Unix. Dans Windows PowerShell, la barre verticale permet également de passer la sortie d'une commande à l'entrée d'une autre, mais il y a une différence significative dans l'implémentation du pipeline : on ne parle plus d'un jeu de caractères ou d'une sorte de texte. Les applets de commande intégrées ou les fonctions définies par l'utilisateur renvoient des objets ou des tableaux d'objets et peuvent également les recevoir en entrée. Comme le shell Bourne et ses nombreux successeurs, PowerShell facilite les tâches complexes avec un pipeline.

L'exemple de pipeline le plus simple ressemble à ceci :

Get-Service | Sort-Object -property Status

Qu'est-ce que Windows PowerShell et avec quoi est-il consommé ? Partie 1 : Fonctionnalités clés
Tout d'abord, l'applet de commande Get-Service est exécutée, puis tous les services qu'elle reçoit sont transmis à l'applet de commande Sort-Object pour être triés par la propriété Status. L'argument auquel le résultat de la section précédente du pipeline est transmis dépend de son type - généralement, il s'agit de InputObject. Ce problème sera abordé plus en détail dans un article consacré au langage de programmation PowerShell. 

Si vous le souhaitez, vous pouvez continuer la chaîne et passer le résultat de l'opération Sort-Object à une autre applet de commande (elles seront exécutées de gauche à droite). Soit dit en passant, les utilisateurs de Windows ont également accès à la construction de pagination familière à tous les Unixoids : 

Get-Service | Sort-Object -property Status | more

Exécuter des tâches en arrière-plan 

Assez souvent, il est nécessaire d'exécuter une certaine commande en arrière-plan, afin de ne pas attendre le résultat de son exécution dans la session shell. Windows PowerShell a plusieurs applets de commande pour ce cas :

Start-Job - lancer une tâche en arrière-plan ;
Stop-Job — arrêter la tâche en arrière-plan ;
Get-Job — afficher la liste des tâches en arrière-plan ;
Receive-Job — visualiser le résultat de l'exécution de la tâche en arrière-plan ;
Remove-Job — suppression d'une tâche en arrière-plan ;
Wait-Job - transférer la tâche d'arrière-plan vers la console.

Pour démarrer une tâche en arrière-plan, nous utilisons l'applet de commande Start-Job et spécifions une commande ou un ensemble de commandes entre accolades :

Start-Job {Get-Service}

Qu'est-ce que Windows PowerShell et avec quoi est-il consommé ? Partie 1 : Fonctionnalités clés
Les tâches en arrière-plan dans Windows PowerShell peuvent être manipulées en connaissant leurs noms. Tout d'abord, apprenons à les afficher :

Get-Job

Qu'est-ce que Windows PowerShell et avec quoi est-il consommé ? Partie 1 : Fonctionnalités clés
Montrons maintenant le résultat du travail Job1 :

Receive-Job Job1 | more

Qu'est-ce que Windows PowerShell et avec quoi est-il consommé ? Partie 1 : Fonctionnalités clés
Tout est assez simple.

Exécution de commandes à distance

Windows PowerShell vous permet d'exécuter des commandes et des scripts non seulement sur l'ordinateur local, mais également sur un ordinateur distant, et même sur un groupe entier de machines. Il y a plusieurs moyens de le faire:

  • De nombreuses applets de commande ont un paramètre -ComputerName, mais de cette manière, cela ne fonctionnera pas, par exemple, pour créer un convoyeur;
  • Applet de commande Enter-PSSession permet de créer une session interactive sur une machine distante ; 
  • Utilisation de l'applet de commande Invoke-Command vous pouvez exécuter des commandes ou des scripts sur un ou plusieurs ordinateurs distants.

Versions de PowerShell

PowerShell a beaucoup changé depuis sa première version en 2006. L'outil est disponible pour de nombreux systèmes fonctionnant sur différentes plates-formes matérielles (x86, x86-64, Itanium, ARM) : Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008/2008 R2, Windows 7, Windows 8, Windows 8.1, Windows RT, Windows RT 8.1, Windows Server 2012/2012 R2, Windows 10, Windows Server 2016, GNU/Linux et OS X. Dernière version 6.2 publiée le 10 janvier 2018. Les scripts écrits pour les versions antérieures sont susceptibles de fonctionner dans les versions ultérieures, mais le rétroportage peut être problématique car PowerShell a introduit un grand nombre de nouvelles applets de commande au cours des années de développement. Vous pouvez connaître la version du shell de commande installé sur l'ordinateur à l'aide de la propriété PSVersion de la variable intégrée $PSVersionTable :

$PSVersionTable.PSVersion

Qu'est-ce que Windows PowerShell et avec quoi est-il consommé ? Partie 1 : Fonctionnalités clés
Vous pouvez également utiliser l'applet de commande :

Get-Variable -Name PSVersionTable –ValueOnly

Qu'est-ce que Windows PowerShell et avec quoi est-il consommé ? Partie 1 : Fonctionnalités clés
La même chose est faite avec l'applet de commande Get-Host. En fait, il existe de nombreuses options, mais pour les utiliser, vous devez apprendre le langage de programmation PowerShell, ce que nous ferons dans article suivant

Les résultats de 

Microsoft a réussi à créer un shell vraiment puissant avec un environnement intégré pratique pour développer des scripts. Il diffère des outils qui nous sont familiers dans le monde Unix par une intégration profonde avec les systèmes d'exploitation de la famille Windows, ainsi qu'avec les logiciels pour eux et la plate-forme .NET Core. PowerShell peut être appelé un shell orienté objet car les applets de commande et les fonctions définies par l'utilisateur renvoient des objets ou des tableaux d'objets et peuvent les prendre en entrée. Nous pensons que tous les administrateurs de serveurs sous Windows devraient posséder cet outil : le temps est révolu où ils pouvaient se passer de la ligne de commande. Un shell de console avancé est particulièrement nécessaire sur notre VPS low cost exécutant Windows Server Core, mais c'est une toute autre histoire.

Qu'est-ce que Windows PowerShell et avec quoi est-il consommé ? Partie 1 : Fonctionnalités clés

Seuls les utilisateurs enregistrés peuvent participer à l'enquête. se connecters'il te plait.

Quels sujets devraient être abordés en premier dans les prochains articles de la série ?

  • 53,2%Programmation en PowerShell123

  • 42,4%Fonctions et modules PowerShell98

  • 22,1%Comment signer ses propres scripts ?51

  • 12,1%Travailler avec des référentiels via des fournisseurs (fournisseurs)28

  • 57,6%Automatisation de l'administration informatique avec PowerShell133

  • 30,7%Gestion des logiciels et intégration des exécutables PowerShell dans des produits tiers71

231 utilisateurs ont voté. 37 utilisateurs se sont abstenus.

Source: habr.com

Ajouter un commentaire