• Intégration de Powershell

    Cela fait quelques semaines/mois que je poste beaucoup moins, la raison en est assez simple : je suis un peu «à la bourre» sur un projet dont je vous parlerai d’ici quelques semaines. Cela ne veut pas dire que je n’ai pas eu l’occasion de faire des choses dont j’ai envie de parler et parmi celles-ci : l’intégration de PowerShell dans nos applications.

    Si vous avez déjà developpé des applications pour une distribution de type ISV, ou encore mieux une application ASP, vous avez déjà du vous développer des petits programmes pour administrer votre produit et réaliser des tâches telles que :

    • créer des comptes utilisateurs
    • redéfinir des mots de passe
    • faire un rapport d’utilisation pour facturation
    • etc.

    C’est la qu’est entré en jeu PowerShell pour nous.

    L’extensibilité de ce produit est un vrai plaisir… Quoi de plus agréable en effet de pouvoir écrire des commandes de ce type :

    gci monappli:\client1\users
       | foreach {$_.SendPasswordMail()}

    Et pour cela, rien de bien sorcier : deux ou trois classes à implémenter en .net et c’est tout !

    On pourrait même envisager - sous réserve de possibilités techniques... j'ai un peu peur que l'ajout des assemblies powershell dans le GAC limite les possibilité de sécuriser cette affaire - de proposer une version edulcorée de ce Powershell en accès «libre» pour les clients (enfin «libre» : après authentification quand même…). La seule contrainte étant alors de rétirer les modules standard de Powershell. Un client soucieux, par exemple, d’obtenir une liste de factures non payées pourrait se faire son propre export avec un simple :

    gci monappli:\factures 
      | where {$_.PayeeIntegralement -eq false}
     
       | out-mail monadresse@monsite.fr

     et s’il souhaite réaliser un export spécifiques de ses articles :

    gci monappli:\catalogue
       | where {$_.PrixTTC -lt 50}
     
       | export-appliformat -format articles

    Dans les articles suivants, je vous parlerai de comment cela peut être fait.