Tutorial pour débuter avec PowerShell

Vous êtes ici : Accueil > Articles > Tutorial pour débuter avec PowerShell
Publié le 04/09/2009 vers 11h par :
Loïc THOBOIS (Membre depuis le 04/09/2007)
Société : EGILIA
Fonction : Formateur


1 Présentation

PowerShell s’apparente fortement aux différents Shell que l’on peut trouver dans le monde UNIX en en reprenant la philosophie de base mais en ajoutant des fonctionnalités supplémentaires.

On utilise ainsi de petites commandes simples que l’on va combiner à l’aide de pipe pour créer des fonctions complètes.

Les principales caractéristiques de PowerShell sont les suivantes:

  • Langage orienté objet: Ainsi lorsque l'on récupère une liste à la suite d'une commande, il ne sagit pas d'une simple liste mais bien d'objet avec leurs propriétés et leurs méthodes.
  • Accès complet aux assemblies du framework .NET 2.0: Tous les objets du framework .NET peuvent être instancié dans PowerShell donnant accès à un nombre trés importants de fonctions.
  • Extensibilité: Vous pouvez créer vos propres cmdlets (nom d'une commande PowerShell) afin de rendre scriptable vos applications facilements.
  • Objet COM: Vous pouvez utiliser les objets COM Windows dans vos scripts.
  • XML: Intégration poussée avec le XML.

2 Installation

Pour mettre en place notre envirronement d'execution, les composants suivants sont necessaires:

  1. Installer le framework .NET 2.0 SP1 (http://www.microsoft.com/downloads/details.aspx?familyid=79BC3B77-E02C-4AD3-AACF-A7633F706BA5&displaylang=fr)
  2. Installer le PowerShell pour la version de votre système (http://www.microsoft.com/windowsserver2003/technologies/management/powershell/download.mspx)
  3. Eventuellement, vous pouvez installer une interface de dévellopement. Dans certain cas, il vous sera alors nécessaire de baisser le niveau de la stratégie d'execution avec la cmdlets "Set-ExecutionPolicy Unrestricted".

3 Premiers pas

La convention de nom des cmdlets est composée de deux parties:

  • Le verbe qui va indiquer l'action qui va être réalisée (new, set, get, enable, disable, remove, ...).
  • Le nom de l'objet sur lequel la cmdlets va s'appliquer (Service, Mailbox, MailBoxDatabase, ...).

PS > Get-Service

Dans cet exemple, la commande Get-Service renvoie la liste des objets services du serveur avec leurs états.

PS > Get-Service | Get-Member

En ajoutant le pipe vers la commande Get-Member, on liste l'ensemble des méthodes membres des objets retournées par Get-Service.

PS > Get-Service schedule | Format-List -Property *

En utilisant la cmdlets Format-List, on va pouvoir séléctionner les propriétés ainsi que leurs états pour le service schedule.

Voici quelques autres formats de sorties utilisables:

  • PS > get-service | Format-List
  • PS > get-service | Format-Custom
  • PS > get-service | Format-Table
  • PS > get-service | Format-Wide
  • PS > get-service | format-table name, Servicetype, Canshutdown

PS > ipconfig | findstr "Address"

On peu dans le cas de commande classique retournant du texte, faire un filtre pour rechercher une chaine de caractère précise.

4 Recherche d'aide

Pour lister l'ensemble des paramètres d'une cmdlets, vous pouvez utiliser la commande Get-Help que l'on peut comparer à la commande man du monde unix.

Plusieurs niveau de détail peuvent aussi être solicité par la commande get-help en ajoutant les paramêtres suivants:

PS > Get-Help Get-Command -Detailed

Le paramètre -detailled affiche en détail toutes les informations concernant les propriétés de la cmdlets get-command.

PS > Get-Help Get-Command -Full

Le paramètre -full affiche en détail toutes les rubriques d'aide de la cmdlets get-command.

PS > Get-Help Get-Command -Examples

 

Le paramètre -examples affiche des exemples d'utilisation de la cmdlets get-command.

PS > Get-Help Get-Command -Parameter commandType

Le paramètre get-help affiche en détail toutes les informations concernant le paramètre commandType de la cmdlets Get-Command.

5 Les commandes courantes

PS > Get-Command

Affiche les informations de base des cmdlets et des autres commandes PowerShell.

PS > Get-Process

Affiche la liste des processus tournant sur la machine locale.

PS > Get-Service

Affiche la liste des services s'executant sur la machine locale.

PS > Get-Eventlog

Affiche les informations du journal d'évènement local ainsi que son contenu.

PS > Start-Transcript
PS > Stop-Transcript

Permet d'enregistrer les informations d'une session PowerShell.

6 Gestion des alias ( get-alias )

Les alias sont des commandes pointant vers une autre commande (ex: ps qui lance en fait Get-Process)

PS > Get-Alias ps

PS > get-alias | where-object {$_.definition -eq "set-location"}

PS > set-alias gh get-help

PS > set-alias np c:\windows\notepad.exe

PS > remove-item alias:ls

7 Variables et boucles

Comme tout langage de script, PowerShell supporte les variables et les boucles.

Ainsi pour stocker une valeur dans une variable, il suffit d'utiliser la commande suivante :

PS > $result = ipconfig

Pour utiliser une boucle afin d'afficher des numéros de ligne.

for ($i=0 ; $i -lt $result.length; $i++ )
{
   "{0} {1}" -f $i, $result[$i]
}

La même chose avec un foreach…

$i = 1;
foreach($singleLine in $result)
{
   $i++
   "{0} {1}" -f $i, $singleLine
}

8 Fonctions

Des fonctions peuvent être créer en utilisant la syntaxe ci-dessous, des variables pourront être passées et retournées avec facilitée.

$result = ipconfig

function AddLineNumbers
{
   $i = 1;
   foreach($singleLine in $args[0])
   {
      $i++
      "{0} {1}" -f $i, $singleLine
   }
}

AddLineNumbers $result

9 Scripting WMI (Windows Management Instrumentation)

Vous pouvez acceder aux paramètres WMI trés simplement à l'aide de PowerShell:

Get-WmiObject win32_bios -computername 127.0.0.1

Get-WmiObject -Class Win32_OperatingSystem -ComputerName 127.0.0.1

10 Le profile PowerShell

Tous les alias, fonctions et variables sont ajoutés par defaut à la session courante.

Afin de maintenir les changements dont vous avez besoin de manière permanante, il vous suffit de les ajouter à votre profil en editant l'un des fichiers suivants :

%windir%\system32\WindowsPowerShell\v1.0\profile.ps1

Ce profil s'applique à tous les utilisateurs et à tous les shells.

%windir%\system32\WindowsPowerShell\v1.0\Microsoft.PowerShell_profile.ps1

Ce profil s'applique à tous les utilisateurs, mais uniquement au Shell Microsoft PowerShell.

%UserProfile%\My Documents\WindowsPowerShell\profile.ps1

Ce profil s'applique uniquement à l'utilisateur en cours mais sur tous les shells.

%UserProfile%\\MyDocuments\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

Ce profil s'applique uniquement à l'utilisateur en cours mais uniquement au Shell Microsoft PowerShell.

11 Navigation

PowerShell permet de naviguer dans differents environnements:

  • Disques durs
  • Variables
  • Base de registre
  • Alias
  • ...

PS > Get-PSDrive

cd HKLM:

ls

cd system\currentcontrolset\control

12 Pour aller plus loin...

Script Center de Microsoft
http://www.microsoft.com/technet/scriptcenter/

  • Articles
  • Tutoriaux
  • Exemples

 

Vos commentaires
Votre pseudo :
Votre commentaire :
Yalou
18/08/2010 14:11:35

Dommage que çà s'arrette là ...

30/03/2010 14:19:33

Très bien comme intro !
EROL
02/10/2009 06:51:44

Super !
Nouveautés de Terminal Server sous Windows Server 2008 R2
19/09/2009 14:45:00
Présentation d'Exchange Server 2010
22/09/2009 00:25:32
A la découverte de la console Active Directory Administrativ...
24/11/2009 15:56:54
Migration de Exchange 2003 vers 2010 en inter-forêt
19/01/2010 14:45:35
Implémentation de Live Migration pour Hyper-V
19/01/2010 16:38:24
Présentation des Cluster Shared Volume pour Hyper-V 2.0
20/05/2009 19:24:27
Hyper-V 2.0 sous Windows Server 2008 R2
19/01/2009 16:57:21
Présentation de Virtual PC
14/11/2008 15:45:00
Nouveautés de Terminal Server sous Windows Server 2008
17/06/2008 16:09:38
Présentation de IIS 7 sous Windows Server 2008
17/06/2008 13:23:11



Accueil | Actualités | Articles | Astuces | Bons plans | Dvertissements | Événementiel | Lexique | Pas à Pas | Plan du site
@ Copyright 2009 EGILIA
Tous droits réservés