> Tech > L’outil indispensable de PowerShell 2.0

L’outil indispensable de PowerShell 2.0

Tech - Par Jeffery Hicks - Publié le 09 juin 2011
email

Découvrez comment la dernière version de Windows PowerShell peut vous aider à accomplir des tâches quotidiennes et à décupler vos performances.
 

Les pros de l’informatique ont probablement accueilli Windows 7 et Windows Server 2008 R2 avec joie mais aussi en poussant un gros soupir.

L’outil indispensable de PowerShell 2.0

D’un côté, je pense que de nombreuses entreprises attendaient Windows 7 afin de passer par-dessus Windows Vista. Mais le déploiement d’un tout nouveau système d’exploitation signifie plus de travail, peut-être du nouveau matériel et généralement un investissement en termes de temps et de ressources. Ceci étant dit, je suis fermement convaincu que la fonctionnalité qui vous apportera le plus grand retour sur votre investissement sera Windows PowerShell version 2.0.

PowerShell est l’outil de gestion que vous utiliserez au final pour administrer vos serveurs et postes de travail. Bien évidemment, il doit être installé partout et, avec Windows 7 et Windows Server 2008 R2, ce sera le cas. Je ne peux pas vous enseigner tout ce que vous devez savoir sur PowerShell 2.0, mais je souhaite présenter quelques fonctionnalités incontournables qui attireront immanquablement votre attention.

Dans PowerShell 1.0, la gestion d’ordinateurs distants se limitait à utiliser Windows Management Instrumentation (WMI) via la cmdlet Get-WMIObject. Les administrateurs utilisent WMI depuis des années et il n’y a là rien de bien nouveau. Toutefois, WMI a besoin de la connectivité RPC (Remote Procedure Call), ce qui signifie des opérations de configuration et de dépannage de firewall lorsque cela ne marche pas. Cette approche est également lente en cas d’utilisation de plusieurs ordinateurs. Si vous vouliez interroger 10 ordinateurs pour obtenir des informations de disque via WMI, vous pouviez uniquement procéder séquentiellement, ce qui n’était pas franchement efficace. PowerShell 2.0 propose un éventail de techniques de gestion à distance. De nombreuses cmdlets incluent désormais un paramètre Computername:

PS C:\> get-process -ComputerName Research23

Ces cmdlets font appel au Microsoft .NET Framework pour établir une connexion à distance et retourner les résultats sur votre console. Ce type de connexion, certes utile, s’appuie toujours sur la connectivité RPC et DCOM (Distributed Component Object Model).

Pour surmonter ce défi, PowerShell 2.0 introduit un nouveau modèle pour la gestion des ordinateurs à distance. Il utilise les protocoles WS-MAN (WS-Management) afin d’établir des connexions du type SSH (Secure Shell) aux ordinateurs distants. L’implémentation Microsoft de ces protocoles est le service WinRM, lequel est désormais fourni avec les derniers systèmes d’exploitation de l’éditeur. WinRM se connecte aux machines distantes via les ports 80 et 443 par défaut, ce qui en fait une solution nettement plus compatible avec les pare-feu. Ces ports sont modifiables si vous le souhaitez. Dans un environnement de domaine, vous pouvez aisément établir une connexion de type telnet, mais il est possible de la sécuriser vers un ordinateur distant et d’exécuter des commandes.

Un changement majeur par rapport à la version 1.0 est le fait que PowerShell 2.0 doit être installé non seulement sur votre machine, mais aussi sur tout ordinateur distant que vous souhaitez gérer. Toutefois, comme la version 2.0 est désormais fournie par défaut, cela devrait être moins problématique à l’avenir. Avant de pouvoir employer la gestion à distance, vous devez l’activer en local et sur vos machines distantes.

Il s’agit d’une tâche aisée, exécutable une seule fois. Il suffit d’ouvrir une session PowerShell 2.0 et d’exécuter Enable-PSRemoting. Une fois la configuration terminée, vous pouvez vous connecter à un ordinateur distant au moyen de la cmdlet Enter-PSSession. Dès que vous êtes connecté, votre invite reflète la connexion distante. A partir de là, les commandes que vous lancez s’exécutent sur l’ordinateur distant, y compris des outils de ligne de commande comme IPCONFIG et NETSH, même si vous ne pouvez pas employer ce dernier en mode interactif. Il est uniquement possible d’exécuter des commandes NETSH complètes.

Vous pouvez aussi établir des connexions à plusieurs ordinateurs distants simultanément. Différentes approches sont possibles et en voici une. Premièrement, au moyen de New-PSSession, créez une variable de session pour tous les ordinateurs distants auxquels vous souhaitez vous connecter :

PS C:\> $sessions=new-pssession mycompanydc01, vista01,win2k801

Au moyen de Invoke-Command, lancez une expression PowerShell, et elle s’exécute simultanément sur tous les ordinateurs distants. Les résultats seront renvoyés à votre console. Vous noterez que j’utilise WMI, ce qui est parfaitement acceptable et, dans certains cas, nécessaire. Toutefois, WMI s’exécute en local sur les machines distantes, et les seules données qui me sont retournées via WinRM sont les résultats. La gestion à distance est nettement plus riche et je vous invite fortement à examiner l’aide sur les cmdlets et la rubrique About Remoting.

Téléchargez gratuitement cette ressource

Les 10 Fondamentaux de l’observabilité

Les 10 Fondamentaux de l’observabilité

La définition de l'observabilité, c’est le niveau de compréhension des systèmes complexes que vous gérez, mais concrètement, comment pratiquer l'observabilité avec succès ? Découvrez les 10 Principes fondamentaux de l'observabilité.

Tech - Par Jeffery Hicks - Publié le 09 juin 2011