Bonjour, Je vous propore un nouvel �l�ment � utiliser : ExtensionMethod.psm1



Voici un module PowerShell permettant de cr�er un fichier .ps1xml d�di� aux m�thodes d'extension contenues dans un fichier assembly dotnet.



Sous Powershell V1 et V2 on ne peut pas utiliser celles dont le type de this est :



* un type g�n�rique, car le syst�me d'extension de type de PowerShell n�cessite de pr�ciser des noms de type fort pour chaque param�trage de la classe g�n�rique,

* un type interface, car PowerShell ne sait pas nativement 'extraire' une interface particuli�re � partir d'un objet. De plus le pipeline de PowerShell 'transforme' les objets de type IEnumerable en System.Array.



Exemple bas� sur le projet Dvp.NET :



Code :



$PathAsm="C:\Temp\dvp.net-0.2-beta\Binaries"

$TypesFileName="C:\Temp\DateTimeExtensionMethod.Types.ps1xml"

Import-Module ExtensionMethod

#ou

#Import-Module "Votrepath\ExtensionMethod.psm1" -force



Add-Type -Path "$PathAsm\Developpez.Dotnet.dll" -Pass|

#filtre sur le namespace

# Where {$_.Namespace -eq "Developpez.Dotnet.Reflection"} |

Find-ExtensionMethod -ExcludeGeneric|

Get-ExtensionMethodInfo -ExcludeGeneric -ExcludeInterface|

New-HashTable -key "Key" -Value "Value" -MakeArray|

#Cr�e un texte repr�sentant une structure XML que

# l'on ins�re dans un fichier de type PowerShell.

New-ExtensionMethodTypeData > $TypesFileName



#Dans la session courante, chargement et signature si

# n�cessaire, du fichier d'extension de type g�n�r� :

Type $TypesFileName|More

#Si la strat�gie d'ex�cution est 'AllSigned'

if (Get-ExcecutionPolicy -eq "AllSigned" )

{

#Signe $TypesFileName

}

#Met � jour la configuration de type �tendu (ETS)

Update-TypeData $TypesFileName



#usage

$dt=Get-Date

$dt.AddDays(1).Next("Sunday")

# renvoi :

# dimanche 8 ao�t 2010 16:07:54







Qu'en pensez-vous ?