Salut à tous,
Après un long moment d'absence, je suis de retour.
Suite à un sujet donné au boulot, je me lance dans la réalisation
d'articles sur un nouveau sujet : Powershell.
On m'a demandé de réaliser un script qui configure de façon
automatique une machine (hostname, workgroup, users, services activés, ....)
Donc voici le premier billet sur le sujet qui va porter sur la
base des bases de Powershell.
Historique rapide et
téléchargement
Alors Powershell, anciennement MSH (Microsoft Command Shell est un
langage de script fondé sur la programmation objet et une interface en ligne de
commande.
Il est nativement présent sur Windows
7 et Windows Server 2008. Pour pouvoir l’utiliser sur XP, Vista ou Microsoft
Server 2003, il vous faudra aller le télécharger grâce au lien suivant :
- · Module d'installation localisé Windows PowerShell 1.0 pour Windows XP (KB926140) :
- · Module d'installation Windows PowerShell 1.0 pour Windows Vista (KB928439) :
- · Module d'installation localisé Windows PowerShell 1.0 pour Windows Server 2003 (KB926140) :
Démarrage de la console
Une fois que vous avez installé
Powershell, vous avez alors plusieurs méthodes pour ouvrir la console :
- Se rendre dans le menu Démarrer => Tous les programmes => Windows Powershell
- Appuyer sur les touches (Windows) + (R) pour ouvrir une fenêtre Exécuter et taper powershell.
On verra alors apparaître une console
qui ressemble à ceci :
Nos
premiers pas dans la console
Pour ceux qui connaissent le DOS, pas
de soucis car les commandes du DOS sont reprises dans Powershell. Après il va
falloir apprendre certaines cmdlets (c’est le nom des commandes Powershell).
Une cmdlet a une structure bien définie : Verbe-nom.
Je vous donnerai d’autres explications
sur les cmdlets un peu plus tard.
Tous cela pour vous dire que si vous
tapez un ‘dir’ dans une console Powershell, vous obtiendrez la liste des
répertoires (au niveau de l’arborescence où vous êtes) avec la date de dernière
modification du répertoire et les droits qui sont mis en place sur le
répertoire.
Si on essaie de taper une cmdlet comme
par exemple ‘Get-Process’ (donne la liste des processus en cours), on obtiendra
ceci :
Il y a certaines commandes qu’il est
indispensable de connaître comme par exemple ‘cls’ qui permet d’effacer le
contenu de la fenêtre Powershell ou alors la commande ‘exit’ qui ferme la
console.
La dernière commande indispensable est
la commande ‘help’ équivalente à ‘Get-Help’ qui est l’aide de la console
Powershell.
Les
raccourcis clavier
Certains raccourcis clavier peuvent vous faire
gagner du temps. Sauf erreur de ma part, ses raccourcis existaient déjà sous
une console DOS.
Si je vous dis quels vont être les effets
d’appui sur les touches flèches haut et flèches bas ? Une
idée ??? Si vous répondez que ses
deux touches permettent de naviguer dans la commande qui ont été tapé durant
l’ouverture de la console Powershell, je dis que vous avez entièrement raison.
Mais savez-vous que les touches (F5) et (F8) permettent de faire la même chose.
La touche (F7) permet d’afficher un cadre avec la liste des commandes et un
numéro pour chaque commande. Si vous voulez réutiliser une de ses commandes,
vous pouvez alors appuyer sur (F9) et taper le numéro de la commande.
L’auto-complétion
Le complètement ou complètement automatique,
ou encore par anglicisme complétion ou auto-complétion, est une fonctionnalité
informatique permettant à l'utilisateur de limiter la quantité d'informations
qu'il saisit avec son clavier, en se voyant proposer un complément qui pourrait
convenir à la chaîne de caractères qu'il a commencé à taper.
Pour tout informaticien qui est censé être
fainéant, c’est parfait. Vous commencez à taper une commande, vous appuyez sur
(Tab) et Powershell vous fait des proprositions de commande.
Exemple :
Si vous tapez ‘Get-‘ et que vous
appuyer une première fois sur (Tab), Powershell vous proposera ‘Get-Acl’. Un
second appui sur la touche (Tab) et Powershell passera à la proprosition
suivante, soit : ‘Get-Alias’, ….
Le
piping
Si certains d’entre vous on déjà
touché au shell sous Linux, ils doivent connaître le terme de pipe.
Si j’essaie dans donner une définition
la plus simplifiée possible, c’est quand vous avez plusieurs commandes qui se
suivent. Celle-ci sont séparées par un pipe ( | ).
Exemple :
Commande 1 | Commande 2 | Commande 3
Le résultat de la commande 1 est la
source de départ avant l’exécution de la commande 2. Le but étant au fur et à
mesure des commandes de restreindre le nombre de résultats.
Exemple
2 :
L’utilisation du pipe peut également
permettre de faire un ‘tri’ dans l’affichage.
Si on reprend une des commandes tapées
ci-dessous (et qui retourne pas mal de résultat) comme ‘Get-Process’ (qui, pour
rappel, liste les processus en exécution sur la machine), il se peut que votre
fenêtre Powershell ne soit pas assez grande pour afficher l’ensemble des
processus dans la fenêtre. Vous devrez alors jouer avec la barre de défilement verticale
(ce n’est pas très pratique). Une solution a ce problème peut-être de taper un
‘| more’ après notre cmdlet. On verra alors
que la fenêtre powershell affiche les premiers résultats et que pour
avoir le reste, il faut presser la touche (Espace).
‘Get-Process’
(sans pipe pour l’affichage)
‘Get-Process
| more’
La
redirection
Le symbole pour la redirection est
(>). Le but généralement est de redirigé le résultat d’une commande vers un
fichier. Le but étant de garder une trace de son travail. Bien sûr ce n’est pas
l’unique usage de la redirection.
Exemple :
La
première commande envoie le résultat du ‘Get-Process’ dans un fichier situé à
la racine et qui s’appelle ‘processus.txt’. La deuxième commande permet de
lancer le fichier ‘processus.txt’ : un bloc note va donc s’ouvrir avec le
résultat de ma commande à l’intérieur.
Affichage
du fichier ‘processus.txt’
Voila pour la base des bases. J’espère
avoir été suffisamment clair dans mes explications. Surtout si vous avez des
questions, n’hésitez pas à laisser des messages auxquels je répondrai.
A très vite pour la suite sur
Powershell.
Virtual87