PowerShell Snapins

Snapins in Powershell are like toolboxes, including many commands, specific to a tool, a software, etc..

The two most important (most famous) :

Microsoft.Exchange.Management.PowerShell.Admin

VMware.VimAutomation.Core

Here is the command to add a snapin :

Add-PSSnapin

A really easy way to add all installed snapins :

Get-PSSnapin -registered | Add-PSSnapin

 

(french) Tutoriel Powershell – 1

Dans un environnement traditionnel, l’exécution de chaque commande retourne du texte. Prenons par exemple la commande « DIR ». Celle-ci fournit en retour une liste textuelle de fichiers et de répertoires. En PowerShell, l’équivalent de cette commande se nomme « Get-Childitem ». Bien que son exécution retourne à l’écran à peu près la même chose que la commande « DIR », elle renvoie en réalité à l’écran une liste d’objets. Ces objets sont la plupart du temps de type fichier ou répertoire, mais ils peuvent aussi être de type clé de registre. Vous découvrirez en fait que la plupart des commandes PowerShell sont génériques.

Vous ne comprenez peut-être pas la subtilité pour l’instant, mais vous découvrirez que cela est l’une des grandes forces de PowerShell.

Ainsi pour continuer l’exemple précédent, vous pourriez avoir envoie d’obtenir uniquement la taille d’un fichier.

Allez, on essaie…

C:TEMP> Dir monfichier.txt

Le volume dans le lecteur C n’a pas de nom.

Le numéro de série du volume est 78D5-739D

Répertoire de C:TEMP

28/11/2006  13:00            82 944 monfichier.txt

1 fichier(s)           82 944 octets

0 Rép(s)   3 140 132 864 octets libres

Pas évident maintenant de ne récupérer que la taille du fichier. Il va falloir compter le nombre de lignes et de caractères pour découper la chaine et enfin espérer obtenir en la taille en passant cette commande via le pipe à une autre commande. Fatistidieux !

Et maintenant en PowerShell ?

PS C:TEMP> $b = Get-ChildItem monfichier.txt; $b.length

82944

Ou encore :

PS C:TEMP>(Get-ChildItem monfichier.txt).length

82944

De la même manière nous pourrions très facilement obtenir la date de création du fichier ou la date de dernier accès avec les commandes suivantes :

$b = Get-ChildItem monfichier.txt; $b.CreationTime

$b = Get-ChildItem monfichier.txt; $b.LastAccessTime

Facile non ?

La puissance de .Net

Toutes les commandes PowerShell ont été écrites en s’appuyant sur les classes d’objet .Net alors que de prime on aurait pu croire qu’il s’agissait de WMI. Ceci permet 2 choses : la première, vous avez accès à l’intégralité des classes du framework .Net (ce qui offre des fonctionnalités étendues par rapport à WMI) et la seconde, si vous êtes familiers avec le développement .Net, il vous sera d’autant plus facile d’apprendre le PowerShell (en inversement bien sur !).

La cohérence des commandes et de leurs paramètres

Toutes les commandes font partie d’une même classe d’objet. Elles héritent donc tout naturellement des mêmes paramètres. Ainsi si vous maîtrisez les paramètres d’une commande, vous les maîtrisez quasiment pour toutes les autres !

L’aide sur les commandes

PowerShell possède une aide intégrée très complète. Celle-ci possède 3 niveaux de détails. Le premier s’obtient en demandant de l’aide sans spécifier de paramètres comme :

 PS C:> Get-Help Get-ChildItem

Ou encore, en utilisant les alias :

PS C:>help Get-ChildItem -det

Pour de l’aide détaillé !

Le second s’obtient en ajoutant le paramètre « -detailed » et le dernier avec le paramètre « -full ». De plus l’aide est français !

Vous pouvez également obtenir de l’aide sur un sujet bien précis, par exemple sur l’utilisation du pipe. Pour ce faire, utilisez la commande suivante :

 PS C:> Get-Help about_pipeline

Pour obtenir la liste des sujets de l’aide, tapez la commande :

 PS C:> Get-Help about*