Créer des raccourcis de type (Type accelerators) en powershell
Salut,
Un petit article en cette matinée ensoleillée pour vous montrer la puissance de Powershell. Vous connaissez les types .NET ? Et bien vous allez pouvoir créer vos raccourcis de type dans powershell et jouer avec :). Des personnes (bien plus malines que moi) ont décompilé Powsershell pour nous et on déniché cette peteite classe
internal static class TypeAccelerators { // Fields private static Dictionary allTypeAccelerators; internal static Dictionary builtinTypeAccelerators; internal static Dictionary userTypeAccelerators; // Methods static TypeAccelerators(); public static void Add(string typeName, Type type); internal static void FillCache(Dictionary cache); internal static string FindBuiltinAccelerator(Type type); public static bool Remove(string typeName); // Properties public static Dictionary Get { get; } }
On notera la présence de 2 méthodes publiques “Add & Remove” qui vont nous permettre d’ajouter et/ou supprimer des accelerators .NET.
Powershell étant un language relativement flexible, il est possible d’aller titiller grâve à l’utilisation de la méthode gettype() pour invoquer des méthodes publiques.
premièrement il s’agit de créer une référence vers le type
$AcceleratorType = [type]::gettype('System.Management.Automation.TypeAccelerators')
Deuxièmement, on ajouter notre accélérateur “maison”
$AcceleratorType::Add('Raccourci',$AcceleratorType)
On retourne toute la liste des raccourcis déinis
[Raccourci]::get
Il esxiste déjà alias déjà présent dans Powershell v2 donc ^^
Pour rajouter des raccourcis perso il suffira d’utiliser la commande suivante donc
[Raccourci]::add([nom], [type])
Pour le type vous pourrez facilement trouver des listes de type en fouillant le msdn ici ou encore mieux par là, pour le nom de votre raccourci… je vous laisse choix (et me sortez pas ficelle….)
La puissance de ces raccourcis est prouvée lors de la validation d’un set d’argument ou [ipaddress] viendra valider qu’une ip est correcte sans avoir à rajouter de contrôles à base d’expression régulière. Où bien d’autres choses à inventer encore!
Pour supprimer un raccourci perso, on pourra utiliser cette commande:
[Raccourci]::remove([nom])
Voili voilou, évidement si vous avez des remarques…
PS: Un script interessant ici.
Deux petites remarques, prendre le temps de relire et de garder [TypeAccelerators] eu été préférable à sa localisation.
Enfin en PS v3 il y a un ‘breaking change’ sur le code suivant :
[type]::gettype(‘System.Management.Automation.TypeAccelerators’)
Sinon j’aime bien le sablier 😉
>>Où bien d’autres choses à inventer encore!
Consulte la version gratuite de Poshboard…
J’oublais, le second lien su MSDN pointe sur le Framework 4.0, la V2 c’est 2.0.
PoshBoard c’est un autre niveau de scripting que le mien, j’avais déjà regardé leur code..
Merci au moins quelqu’un qui lit mes articles!
>>PoshBoard c’est un autre niveau de scripting que le mien, j’avais déjà regardé leur code..
Je sais, j’ai codé le module 🙂
C’est plus du dev, mais en utilisant toutes les ressources native de PS et un qq classes C#…
>>Merci au moins quelqu’un qui lit mes articles!
C’est tjr plaisant de lire des blogs en Français sur PS.
Pour completer l’article ci dessus, Matthew Betton nous a gratifié d’un beau post aujourd’hui que vous retrouverez ici: http://www.via-powershell.fr/index.php/2012/07/apprendre/name-spaces-et-type-name-accelerators-sous-powershell
Bonne soirée !