Question [Tutoriel] Les fonctions avancées sous PS V2
- Laurent Dardenne
- Auteur du sujet
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
Accéder au tutoriel.La version 2 de PowerShell apporte de nombreuses évolutions, l'une concerne l'écriture de cmdlet en code natif à l'aide de fonctions dites avancées utilisant différents types d'attributs. Dans le texte suivant je vous propose d'étudier la création de cmdlets sans utiliser de langage compilé dotnet.
Une bonne connaissance des principes de base de PowerShell, notamment celui du pipeline, du fonctionnement des cmdlets et des classes dotnet, facilitera la lecture de ce tutoriel qui est tout de même orienté développeur. Difficile de faire autrement sur un tel sujet, mais cela reste un tutoriel sur le scripting avancé sous PowerShell.
[edit]QUELLES SONT LES AVANCEES ?.............................................................................................................4
1.1 PRINCIPE D’UN ATTRIBUT...........................................................................................................................5
1.2 LES TYPES D’ATTRIBUT DE PARAMETRE ......................................................................................................5
1.2.1 Attribut Alias.........................................................................................................................................5
1.2.2 Attributs de validation de paramètres....................................................................................................6
1.2.3 Attribut Parameter................................................................................................................................6
1.3 DECLARER UN ATTRIBUT............................................................................................................................6
2 LIAISON DE PARAMETRES .........................................................................................................................8
2.1 CONVENTION DE NOMMAGE DE PARAMETRES...........................................................................................10
3 LA GESTION DU PIPELINE ........................................................................................................................11
3.1 DIFFERENCES ENTRE LA VERSION 1 ET LA VERSION 2................................................................................12
4 LES ARGUMENTS DE L’ATTRIBUT PARAMETER ..............................................................................16
4.1 MANDATORY............................................................................................................................................16
4.2 POSITION..................................................................................................................................................16
4.3 HELPMESSAGE.........................................................................................................................................17
4.4 VALUEFROMPIPELINE..............................................................................................................................17
4.5 VALUEFROMPIPELINEBYPROPERTYNAME ...............................................................................................17
4.6 VALUEFROMREMAININGARGUMENTS ......................................................................................................21
4.7 PARAMETERSETNAME ..............................................................................................................................21
4.7.1 Validité des jeux de paramètres...........................................................................................................23
5 LES ATTRIBUTS DE VALIDATION...........................................................................................................26
5.1 ALLOWNULL............................................................................................................................................28
5.2 VALIDATENOTNULL ................................................................................................................................28
5.3 ALLOWEMPTYSTRING..............................................................................................................................28
5.4 VALIDATENOTNULLOREMPTY................................................................................................................29
5.5 ALLOWEMPTYCOLLECTION ......................................................................................................................29
5.6 VALIDATECOUNT.....................................................................................................................................29
5.7 VALIDATELENGTH ...................................................................................................................................29
5.8 VALIDATEPATTERN..................................................................................................................................30
5.9 VALIDATERANGE.....................................................................................................................................31
5.10 VALIDATESET ..........................................................................................................................................31
5.11 VALIDATESCRIPT .....................................................................................................................................31
5.11.1 Création de règles de validation .....................................................................................................33
5.11.2 Usage de fonction de validation dans un module............................................................................34
5.12 DIFFERENCES DE COMPORTEMENT ENTRE UNE FONCTION AVANCEE ET UN CMDLET .................................34
6 CREATION DE PARAMETRES DYNAMIQUES ......................................................................................35
7 LA VARIABLE AUTOMATIQUE PSCMDLET.........................................................................................40
7.1 GESTION DES EXCEPTIONS........................................................................................................................42
7.2 LA VARIABLE ERRORVIEW.......................................................................................................................43
7.3 A PROPOS DU BLOC END............................................................................................................................44
8 LES ARGUMENTS DE L’ATTRIBUT CMDLETBINDING.....................................................................44
8.1 SUPPORTSSHOULDPROCESS ......................................................................................................................45
8.1.1 A propos des capacités des providers ..................................................................................................46
8.1.2 La méthode ShouldContinue................................................................................................................47
8.2 CONFIRMIMPACT......................................................................................................................................48
8.2.1 La variable $ConfirmPreference .........................................................................................................49
8.2.2 La variable $WhatIfPreference............................................................................................................50
8.3 SUPPORTSTRANSACTIONS .........................................................................................................................50
8.4 DEFAULTPARAMETERSETNAME ...............................................................................................................50
9 ACCEDER AUX DETAILS D’UNE COMMANDE.....................................................................................51
9.1 ACCEDER AUX INFORMATIONS D’UNE FONCTION ......................................................................................51
9.2 ACCEDER AUX INFORMATIONS D’UN CMDLET...........................................................................................54
9.3 ACCEDER AUX INFORMATIONS D’UN FICHIER SCRIPT ................................................................................55
9.4 ACCEDER AUX INFORMATIONS D’UN MODULE...........................................................................................55
9.5 UNE APPROCHE DU SCRIPTING BASEE SUR DES PLUGINS ............................................................................56
10 PROXY DE CMDLET ...................................................................................................................................56
10.1 STEPPABLE PIPELINES ...............................................................................................................................58
10.1.1 Bloc Begin......................................................................................................................................58
10.1.2 Bloc Process...................................................................................................................................59
10.1.3 Bloc End.........................................................................................................................................59
10.2 GESTION DES ERREURS.............................................................................................................................60
10.3 SUPPRESSION DE PARAMETRES..................................................................................................................61
10.4 AJOUT DE PARAMETRES ............................................................................................................................61
11 SCRIPTBLOCK ET ATTRIBUTS ................................................................................................................62
12 CONSTRUIRE L’AIDE EN LIGNE..............................................................................................................63
12.1 CONSTRUIRE UN FICHIER D’AIDE LOCALISE AU FORMAT MAML ..............................................................63
13 CONCLUSION................................................................................................................................................66
14 LIENS...............................................................................................................................................................65
Voir aussi :
connect.microsoft.com/PowerShell/feedbac...not-coerce-null-true
Message édité par: Laurent Dardenne, à: 26/02/10 21:22
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
Beau travail, chapeau ! Je viens de télécharger ton tuto et de le parcourir rapidement, mais dès que j'ai un peu de temps je me ferais un plaisir de le lire.
Bravo!
Arnaud
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Auteur du sujet
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
Arnaud écrit:
Merci.Beau travail, chapeau !
C'est vrai que j'ai eu pas mal de travail pour le rédiger.
Arnaud écrit:
C'est un sujet relativement facile, mais comme tu le dis il faut du temps pour l'étudier et pratiquer toutes les nouveautés liées à l'écriture de cmdlet en mode natif.mais dès que j'ai un peu de temps je me ferais un plaisir de le lire.
Si vous codiez déjà vos fonctions comme des cmdlets, usage du pipe+blocks (begin,process,end), cela ne devrait pas vous poser de problème, sinon c'est l'occasion de s'y mettre
Il faut juste savoir que la gestion des confirmations,ShouldContinue, n'est pas vraiment évidente à mettre en oeuvre...
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
J'ai enfin pris le temps de te lire et j'avoue avoir perfectionné mes connaissances sur le sujet !
Vraiment très bien ton tuto.
Je viens de m'apperçevoir que tu l'avais mis à jour le 13 Mars, aurais tu quelque part un suivi des modifications afin d'être sur que je ne loupe rien car la version que j'ai lu était antérieure.
Bon travail, et merci encore !
Arnaud
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Auteur du sujet
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
Arnaud écrit:
Il est fait pour çaJ'ai enfin pris le temps de te lire et j'avoue avoir perfectionné mes connaissances sur le sujet !
Arnaud écrit:
J'espère, il m'a demandé beaucoup de travail, pas mal de tests et de recherches.Vraiment très bien ton tuto.
Arnaud écrit:
2 points:aurais tu quelque part un suivi des modifications
-Un court passage sur l'attribut [OutputType] qui n'est pas documenté,
-et un ajout sur l'utilisation de fonction de validation au sein d'un module (cf. Attribut ValidatScript).
Merci pour l'annonce
ps:
Dés que je trouve le temps de le finaliser, je posterai le module de validation et les fichiers de localisation (fichiers MAML Fr et Us pour l'aide, et fichiers DATA pour les messages d'erreur).
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Contributions à la communauté
- [Tutoriel] Les fonctions avancées sous PS V2