Windows PowerShell est un shell de ligne de commande Windows spécialement conçu pour les administrateurs système. Il comprend une fenêtre de ligne de commande interactive de style DOS et un environnement de script, et peut être utilisé indépendamment ou conjointement. Contrairement à la plupart des shells qui reçoivent et envoient des messages texte, Windows PowerShell repose sur le Common Language Runtime .NET et le .NET Framework pour recevoir et répondre aux objets .NET. Ces fonctionnalités fournissent de nouveaux outils et méthodes pour la gestion et la configuration de Windows.
PowerShell
Un concept important dans Windows PowerShell est la « cmdlet », un outil de ligne de commande simple à fonction unique intégré au Shell. Les utilisateurs peuvent utiliser les commandes indépendamment, mais leurs effets dépendent des tâches et de l'environnement de l'application. Windows PowerShell contient plus de 100 lignes de commande de base et les utilisateurs peuvent écrire leurs propres lignes de commande et les partager avec d'autres utilisateurs.
Comme la plupart des shells, Windows PowerShell vous donne accès au système de fichiers de votre ordinateur. De plus, Windows PowerShell vous permet d'accéder à d'autres données stockées, telles que le registre et les certificats de signature numérique, aussi facilement que d'accéder au système de fichiers.
PowerShell dans Windows Server 2008 R2 a été mis à niveau vers 2.0, qui a introduit de nombreuses nouvelles fonctionnalités, telles que la gestion à distance, un environnement de script complet, des outils de débogage, etc. Examinons de plus près les nouvelles fonctionnalités d'ISE et les fonctions à distance améliorées dans PowerShell V2. .
1. Environnement de script intégré ISE (Environnement de script intégré)
Une exigence de base pour PowerShell est de pouvoir écrire et déboguer facilement des scripts PowerShell v2 est fourni avec un environnement de script intégré ISE (Integrated Script Environment), qui facilite l'écriture de scripts PowerShell. ISE comprend un panneau de script, un panneau de sortie et. Un panneau de ligne de commande.
Panneau ISE
Le panneau de ligne de commande ISE est très similaire au panneau de ligne de commande PowerShell. Les utilisateurs peuvent y saisir des commandes et appuyer sur Entrée pour exécuter la commande. Les résultats de l'exécution de la commande seront affichés dans le panneau de sortie et les résultats de toutes les exécutions de commandes précédentes pourront être clairement suivis. Le panneau de script en haut peut être utilisé pour écrire et déboguer des scripts. Le panneau de script prend en charge plusieurs scripts pour fonctionner ensemble, ce qui le rend facile à utiliser.
Afin d'aider les utilisateurs à déboguer les scripts, ISE permet aux utilisateurs de définir des points d'arrêt de débogage de différentes manières. Ils peuvent être définis manuellement ou automatiquement dans certaines conditions particulières. Ces dernières offrent une meilleure expérience de fonctionnement. Dans la commande permettant de définir un point d'arrêt, l'utilisateur doit spécifier le nom et les coordonnées du script de débogage.
Set-PSBreakpoint .[Script-File-Name].ps1 -line X
Si vous souhaitez définir plusieurs points d'arrêt, vous devez les séparer par des virgules lors de la spécification des coordonnées, telles que
Set-PSBreakpoint .[Script-File-Name].ps1 -ligne X,Y,Z
Si vous souhaitez définir un point d'arrêt lors de l'appel d'une fonction spécifique, vous devez utiliser la commande Set-PSBreakpoint, le paramètre -Command et le nom de la fonction :
Set-PSBreakPoint -Command [Nom de la fonction]
Le débogueur ISE peut également définir un point d'arrêt lors de la lecture ou de l'écriture d'une variable spécifique. Voici la commande permettant de définir un point d'arrêt lors de la lecture ou de l'écriture d'une variable :
Set-PSBreakpoint -Variable [Variable-Name] -mode lecture
Set-PSBreakpoint -Variable [Variable-Name] -mode écriture
Une fois qu'un point d'arrêt est défini, il possède un identifiant unique. Vous pouvez supprimer le point d'arrêt en supprimant l'identifiant via la commande Disable-PSBreakpoint :
Désactiver-PSBreakpointX
2. Amélioration des fonctions à distance de PowerShell v2
Une autre fonctionnalité importante de PowerShell v2 est l'amélioration des capacités d'opération à distance (PowerSell remoting), en ajoutant une nouvelle ligne de commande Invoke-Command. Il convient de noter que l'accès à distance PowerSell ne prend actuellement en charge que les ordinateurs exécutant Vista SP1, Windows Server 2008 et Windows 7, et que la version correspondante de l'outil de gestion à distance WinRM doit être installée. Cela signifie que les utilisateurs ne peuvent connecter que des ordinateurs Vista SP1/Win 2008 avec PowerShell v2 et WinRM installés via PowerShell remoting. Les ordinateurs avec Vista (seul PowerShell peuvent être installés) et les systèmes WinXP ne sont pas pris en charge.
Configuration système requise et améliorations pour PowerShell v2
Dans la version préliminaire CTP de PowerShell 2.0, la commande Invoke-Expression est utilisée pour se connecter à l'ordinateur distant :
Invoke-Expression –computerName atl-fs-001 –commande Get-Process
Si l'utilisateur souhaite exécuter la commande Get-Process sur l'ordinateur distant atl-fs-001, la nouvelle commande Invoke-Command peut être utilisée :
Invoke-Command –computerName atl-fs-001 –scriptblock
On peut voir que les paramètres de base des deux commandes sont les mêmes. L'équipe PowerShell a remplacé la commande Invoke-Expression par Invoke-Command et a remplacé la commande – par le paramètre –scriptblock, bien qu'il n'y ait pas beaucoup de changements dans la commande. , il a amélioré la stabilité opérationnelle, la sécurité et les performances.
Bien entendu, cette commande peut également prendre en charge plusieurs ordinateurs distants. Si vous avez besoin d'obtenir des informations de processus à partir d'ordinateurs distants atl-fs-001, atl-fs-002 et atl-fs-003, vous pouvez utiliser la commande :
Invoke-Command –computerName atl-fs-001, atl-fs-002, atl-fs-003 –scriptblock
Prend en charge plusieurs ordinateurs distants
Comme la commande Invoke-Expression, Invoke-Command peut se connecter à l'ordinateur distant et exécuter la commande, mais la connexion sera immédiatement perdue. Si vous avez besoin d'une connexion persistante à l'ordinateur distant, vous pouvez créer une session PowerShell avec la commande :
$objRunspace = Nouveau-Runspace atl-fs-001, atl-fs-002, atl-fs-003
Si vous avez besoin de plus d'informations sur la commande Invoke-Command, vous pouvez obtenir des instructions et des exemples via la commande suivante :
Get-Help Invoke-Command –plus d'informations |