mardi 7 février 2012

PowerShell GUI Designer: créez des interfaces pour PoshBoard et ShowUI en ligne

En tant que développeur PowerShell, vous avez appris à vous passer des interfaces graphiques pour contrôler vos systèmes.

Il est toujours intéressant de pouvoir habiller nos scripts avec une interface pour faciliter leur utilisation, que ce soit en WPF via ShowUI ou online avec PoshBoard.

Créer une interface peut être ardu, même pour un développeur .NET. C'est pourquoi nous vous proposons aujourd'hui gratuitement notre designer, qui va vous permettre de créer dynamiquement des scripts pour PoshBoard et ShowUI (d'autres format de sortie sont prévues)
C'est encore une version Alpha, mais vous pouvez déjà commencer à créer vos IHM ici :

N'hésitez pas à me remonter bugs, idées sur cet outil, j'espère qu'il vous sera utile.

jeudi 19 janvier 2012

PoshBoard aux TechDays 2012


Venez découvrir la version finale de PoshBoard et PoshBoard Windows Phone 7 lors de notre session aux TechDays 2012 le jeudi 9 février à 14H30, et durant les jours sur le stand de Nelite!



Plus d'infos ici



Nous présenterons des use-cases concrets autour d'Active Directory, Exchange ou la virtualisation issu de nos experiences chez nos clients.

vendredi 11 novembre 2011

PoshBoard version finale disponible

La première build "finale" de PoshBoard est disponible, vous pouvez la télécharger sur notre site http://www.poshboard.com

PoshBoard final version available

Hi all,

The final release of PoshBoard Client is here ! download it from http://www.poshboard.com

lundi 10 octobre 2011

Temoignage PoshBoard PoshBoard

Hello ! je suis à la recherche de quelqu'un souhaitant témoigner sur son utilisation de PoshBoard pour un magazine.

Contactez moi a antoine.habert[At]nelite.com

thks !

Recherche experts PowerShell

Un petit message professionnel: Je suis à la recherche de 2 profils experts PowerShell ayant une affinité avec le développement .NET pour rejoindre mon équipe 100% dédiée au développement orienté infrastructure.

Nous travaillons sur les dernières technologies Microsoft dans une équipe traitant à la fois l'automatisation dans des projets infrastructure et la R&D (Windows Phone, Windows 8, PowerShell 3.0....).

Les postes sont ouverts sur Levallois-Perret, salaire et package attractif. Contactez moi à antoine.habert[AT]nelite.com pour plus d'infos.

vendredi 22 juillet 2011

PowerWPF: Template de projet WPF avec PowerShell intégré

Je viens de publier un nouvel outil sur codeplex, PowerWPF: http://PowerWPF.codeplex.com

L'objectif de ce projet est de faciliter la création d'application WPF par les utilisateurs de PowerShell, qui n'ont aucune compétence en développement WPF. Nous avons géré toute la gestion de POwerShell (appel asynchrone, monitoring du runspace, des pipelines, etc...), en ne laissant que les méthodes les plus simples possibles pour appeler PowerShell et récupérer le resultat. vous avez juste à créer l'interface avec Visual Studio Express, Glisser/déposer les contrôles, rajouter quelques lignes de code C# pour appelez vos scripts (qui peuvent être intégrer à l'outil)

PowerWPF produit un exe unique, directement utilisable et partageable.

Je posterai dans les prochains jours un tutorial sur l'utilisation du template.
I'll post a tutorial in the coming days.

lundi 11 juillet 2011

La beta de PoshBoard 4 est ouverte!

Tout est dans le titre: vous pouvez desormais acceder à la Beta de PoshBoard 4 sur notre site web!

PoshBoard est une solution gratuite de portail web modulaire basé sur PowerShell & Silverlight.

Téléchargez la ici : http://www.poshboard.com

lundi 14 février 2011

Execution de PowerShell 2.0 dans un site web ASP.NET

Dans ce nouvel article, nous allons voir comment utiliser PowerShell 2.0 dans un site web ASP.NET

L'exemple est volontairement le plus basique possible, nous l'étendrons dans les prochains articles.

Cet exemple utilise PowerShell 2.0 et IIS 7.0, mais devrait fonctionner avec IIS 6.0. Vous pouvez utiliser une version express de Visual Studio.

C'est parti!

Configuration du projet

Ouvrez Visual Studio, choisir Fichier > nouveau projet

tuto1_thumb1

Choisir projet web, Application ASP.NET. Choisir un framework cible, 2.0 jusqu'à 4.0 (cet exemple s'appuie sur .NET 4.0 mais fonctionne avec les autres versions du framework)

tuto2_thumb3

Une fois le projet créé, ajouter la réference à la librairie PowerShell appelée "System.Management.Automation". Faire un clic droit sur References et choisir "Ajouter une référence..."

tuto3_thumb2

Choisir "Parcourir...":

C:\Program Files (x86)\Reference Assemblies\Microsoft\WindowsPowerShell\v1.0

ou

C:\Programmes\Reference Assemblies\Microsoft\WindowsPowerShell\v1.0

Pour les systèmes x86

tuto4_thumb2

Nous pouvons maintenant construire l'IHM

Création de l'IHM

Notre IHM va être super basique: une textbox pour fournir le code PowerShell, un bouton exécuter, une textbox pour le résultat :

tuto5

Voici le code ASP.NET pour la page Default.aspx

   1: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="PowerShellCall._Default" %>
   2:  
   3: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   4:  
   5: <html xmlns="http://www.w3.org/1999/xhtml">
   6: <head runat="server">
   7:     <title></title>
   8: </head>
   9: <body>
  10:  
  11:     <form id="form1" runat="server">
  12:     <center>
  13:         <div>
  14:         <table>
  15:             <tr><td><h1>PowerShell Test</h1></td></tr>
  16:             <tr><td><h3>PowerShell Code</h3></td></tr>
  17:  
  18:             <tr><td>
  19:                 <asp:TextBox ID="PowerShellCodeBox" runat="server" TextMode="MultiLine" Width=700 Height=100></asp:TextBox>
  20:             </td></tr>
  21:  
  22:             <tr><td>
  23:                 <asp:Button ID="ExecuteCode" runat="server" Text="Execute" Width=200 onclick="ExecuteCode_Click" 
  24:                      />
  25:             </td></tr>
  26:  
  27:             <tr><td><h3>Result</h3></td></tr>
  28:         
  29:             <tr><td>
  30:                 <asp:TextBox ID="ResultBox" TextMode="MultiLine" Width=700 Height=200 runat="server"></asp:TextBox>
  31:             </td></tr>
  32:         </table>
  33:         </div>
  34:     </center>
  35:     </form>
  36:  
  37: </body>
  38: </html>

Objectif : quand l'utilisateur clique sur "Execute", nous voulons lancer le code PowerShell de la textbox du haut et afficher le résultat dans la textbox du bas.

Voyons de plus près le code C# derrière Default.aspx

Appel de PowerShell 2.0 dans le code behind

Comme vous pouvez le voir dans la page aspx, nous avons un évènement "onclick" sur le bouton. Cette méthode fait appel à la méthode "ExecuteCode_Click" présente dans le fichier .cs

Voici le code de cette méthode :

   1: protected void ExecuteCode_Click(object sender, EventArgs e)
   2:         {
   3:             // Clean the Result TextBox
   4:             ResultBox.Text = string.Empty;
   5:  
   6:             // Initialize PowerShell engine
   7:             var shell = PowerShell.Create();
   8:  
   9:             // Add the script to the PowerShell object
  10:             shell.Commands.AddScript(PowerShellCodeBox.Text);
  11:             
  12:             // Execute the script
  13:             var results = shell.Invoke();
  14:  
  15:             // display results, with BaseObject converted to string
  16:             // Note : use |out-string for console-like output
  17:             if (results.Count > 0)
  18:             {
  19:                 // We use a string builder ton create our result text
  20:                 var builder = new StringBuilder();
  21:                 
  22:                 foreach (var psObject in results)
  23:                 {
  24:                     // Convert the Base Object to a string and append it to the string builder.
  25:                     // Add \r\n for line breaks
  26:                     builder.Append(psObject.BaseObject.ToString() + "\r\n");
  27:                 }
  28:                 
  29:                 // Encode the string in HTML (prevent security issue with 'dangerous' caracters like < >
  30:                 ResultBox.Text = Server.HtmlEncode(builder.ToString());
  31:             }
  32:  
  33:         }

L'exécution de code PowerShell est très simple en C#, nous avons besoin uniquement des étapes suivantes :

1) Création de l'objet PowerShell

Cette objet est l'objet de base pour PowerShell en C#, il permet entre autre d'exécuter des commandes, instancier les runspaces, récupérer les résultats, les erreurs, etc...

2) Création d'un runspace

Ici nous créons un runspace pour exécuter le code PowerShell. Il y a différent moyen de configurer un runspace en C#, mais nous resterons sur la méthode la plus simple pour cet article.

3) Ouverture du runspace.

L'ouverture du runspace est obligatoire pour pouvoir y injecter notre code

4) Add the script

Ici, nous ajoutons notre script dans notre runspace.

5) Execute script

Enfin, nous appelons la méthode Invoke() qui exécute nos commandes dans un pipeline. Cette méthode retourne un collection de PSObject (objet de base retournée par PowerShell)

6) Affichage du résultat

Ensuite, nous parcourons la collection retournée par notre Runspace pour afficher le résultat. Notez que nous appelons la propriété "BaseObject" pour chaque PSObject, cette propriété contient l'objet d'origine avant sa décoration en PSObject par PowerShell.

tuto5

Et voilà ! nous avons créer notre projet, nous allons maintenant pouvoir afficher le résultat d'un script dans notre textbox.

Il nous reste à présent à publier ce site web, et voir comment spécifier un compte spécifique pour l'exécution.

Publier le site web

Maintenant que notre exemple fonctionne, nous allons publier le site web sur IIS et spécifier l'identité du compte de service.

Allez dans "Génerer > Publier...

tuto6

Choisir une destination (Inetpub/wwwroot est le repertoire par défaut pour la publication IIS, mais vous pouvez publier votre site dans n'importe quel repertoire du moment que les droits appropriés sont configurés sur le dossier)

tuto7

Après cela, ouvrir la console de gestion IIS, faire un clic droit sur le site web par défault et selectionner "Ajouter une application"

Note : vous pouvez aussi créer un nouveau site web sous IIS, ou remplacer le site web par défaut pour créer le votre. Créer une application vous permet d'accéder à celle-ci par son nom comme suit: http://localhost/MyApplication

tuto8

Donner un nom a l'application et cliquer sur OK

tuto9

Maintenant que l'application est prête, nous pouvons choisir une identité spécifique pour l'exécution de nos commandes. Il y a de nombreuses façon de configurer une identité d'exécution pour un site web, nous couvrirons ici les plus basiques.

Authentification anonyme

Cette méthode est la plus simple. Nous allons choisir l'authentification anonyme (l'utilisateur ne sera pas identifié) et spécifier un compte de service pour l'exécution du site web. C'est facile, mais gare :

Dans ce contexte, n'importe qui peut accéder au site web et exécuter les actions avec l'identité du compte de service fourni ! Il y a toujours possibilité de filtrer l'accès par les droits au niveau fichiers (restreindre l'accès au repertoire), mais ceci n'est pas la méthode la plus sûre, vous êtes prévenus :)

Sélectionner l'application, faire un clic droit sur "Authentification"

tuto10

Faire un clic droit sur "Authentifcation anonyme" et choisir "Activer", puis Edition

tuto11

Choisir "Utilisateur spécifique" et cliquer sur "Choisir..."tuto12

Remplir le formulaire avec les informations du compte et cliquer sur OK

tuto13

Voilà : votre site va s'exécuter avec l'identité de ce compte de service.

Utiliser un Pool d'application

Dans des scenarii plus évolués, vous pouvez désactiver l'authentification anonyme et continuer à utiliser un compte de service pour votre site. Pour cela, il faut définir l'identité au niveau du pool d'application.

Les pools d'application peuvent être vu comme un contexte d'exécution pour vos sites webs (pour faire simple). Nous n'irons pas dans le détail ici, mais l'idée est de permettre de définir un accès en authentification windows ou formulaire, puis de faire appel à l'identité du pool d'application pour l'exécution des actions dans votre code.

Nous allons créer un pool d'application dédié pour notre projet de test.

Premèrement, faire un double clic sur "Pools d'application" dans la console IIS et choisir "Ajouter un pool d'application"

tuto30

Nommer le pool, choisir le framework approprié et cliquer sur "OK"

tuto31

Selectionner ensuite le pool d'application, et cliquer sur "Paramètres avancés" dans le menu à droite.

tuto32

Choisir Identité et cliquer sur le bouton "..."

tuto21

Choisir "Compte spécifique et cliquer sur "Définir..."
tuto22

Remplir le formulaire et cliquer sur OK

tuto23

A présent, cliquer sur le site web et cliquer sur "Paramètre de base":

tuto33

Cliquer sur "Sélectionner" et choisir Pool d'application

tuto34

Si tout va bien, vous devriez pouvoir afficher l'idendité de votre compte de service avec le code PowerShell suivant :

tuto25

Les sources sont disponibles ici :



Dans le prochain article, nous verrons comment authentifier les utilisateurs et utiliser les données d'un formulaire ASP.NET pour exécuter un script externe.

mardi 1 février 2011

vendredi 30 juillet 2010

Recherche développeurs .NET R&D Silverlight/C#/PowerShell motivés

Une fois n'est pas coutume, voici une proposition d'embauche en rapport avec PowerShell, PoshBoard et les clients riches :)

Je recherche pour le pôle R&D de Nelite deux développeurs .NET pour travailler sur des projets très innovants (et donc je pense très interessants !) autour de Silverlight , WPF, PowerShell et les interfaces tactiles, entre autre.

Vous aimez l'experimentation et les challenges techniques ? vous êtes interessé par les interfaces NUI et le multitouch ? vous voulez mettre en application concrète les toute dernières technologies de dev Microsoft avec l'appuie d'experts reconnus ?

Si vous avez déjà idéalement travaillé sur Silverlight, WPF et/ou PowerShell, que vous avez envie de mettre un grain d'innovation autour des technologies infrastructure, je vous attends avec impatience !

Vous trouverez l'offre d'emploi ici, vous pouvez aussi me contacter directement.


mardi 6 avril 2010

Vidéo de PoshBoard 3.0 aux TechDays 2010

Voici une vidéo avec une section dédiée à la présentation de PoshBoard 3.0 que j'ai faites aux TechDays 2010 :

http://www.programmez.com/video.php?video=95&titre=Quelques-technologies-presentees-aux-TechDays-2010

Merci à Programmez!, solutions logiciels et SupInfo Web TV pour cette présentation !

jeudi 1 avril 2010

PoshBoard au WPC 2010 : feedback needed !

Bonjour à tous,

j'aimerai proposer PoshBoard pour une nomination pour la prochaine WPC en juillet. Je suis à la recherche de retour d'experience utilisateur. Si vous aimez PoshBoard et l'utilisez en prod/preprod/test et en tirer des avantages, si vous pouvez me faire un petit retour par mail expliquant votre usage de la solution et comment elle vous aide dans la gestion de vos systèmes ce serait super !


vous pouvez m'envoyer un bref descriptif à cette adresse : poshboard[at]gmail.com

Merci à vous!


mercredi 6 janvier 2010

Silverlight MultiTouch PoshBoard démo !

La version 3.0 de PoshBoard sera compatible multitouch. Vous pourrez venir l'essayer sur écran tactcle sur le stand de Nelite lors des MS TechDays 2010 les 8,9 et 10 février prochain !

jeudi 15 octobre 2009

PoshBoard sur Get-Scripting

PoshBoard est à l'honneur dans le dernier PodCast de Get-Scripting que vous pouvez écouter ici : http://get-scripting.blogspot.com/2009/10/get-scripting-podcast-episode-13.html

Merci à Alan et Jonathan pour l'accueil !

Infos exclusives sur PoshBoard et les évolutions à venir.



Article sur la gestion des évènements avec PoshBoard 2.0

Je viens de publier un premier article sur la gestion des évènements avec PoshBoard 2.0

Vous pouvez le consulter ici.

vendredi 9 octobre 2009

Nouvelle version 2.0.1027 de PoshBoard

Quoi de neuf ?
Update 2.0.1027 (9th October 2009)
[ADDED] mode "Dynamic Update ON/OFF" : quand vous tapez un script, si ce mode est mis à off, la page ne sera pas rafraichit automatiquement en temps réel

[ADDED] un raccourcis clavier pour cette nouvelle fonction : appuyez sur CTRL+U pour activer/desactiver ce mode (ou utiliser le bouton)
[MODIFIED] Changement dans le gestionnaire de configuration, réorganisation et nouvelles fonctions
[ADDED] Ajout de la gestion de l'attribut LiveUpdate pour les utilisateurs/ groupes. Cet attribut permet d'afficher ou non le bouton "Refresh Mode" pour les utilisateurs.
[MODIFIED] L'impersonification des SuperAdmins est maintenant a "false" par défaut.
[ADDED] Deux nouveaux boutons dans le gestionnaire de config, permettant de monter ou descendre les portails dans le menu.

Attention:
Cette nouvelle version ajoute un attribut aux utilisateurs/groupes dans le fichier de config. Les anciens fichiers ne fonctionneront donc plus avec cette version.

Mais pas de soucis : vous pouvez soit copier vos anciens scripts dans le nouveau fichier de configuration, soit simplement ajouter cet attribut à chacun de vos utilisateurs/groupes :

LiveUpdate="True"

Exemple :


Enjoy :)

vendredi 2 octobre 2009

MVP PowerShell


J'ai eu la bonne surprise d'apprendre hier ma nomination en tant que MVP PowerShell !

Une raison de plus de continuer à poster et promouvoir ce super langage :)



mardi 29 septembre 2009

PoshBoard 2.0 disponible !

Une nouvelle version de PoshBoard est maintenant disponible : plus d'infos et une vidéo ici.

mercredi 17 juin 2009

Le Snapin PowerShell de PoshBoard

Architecture du snapin et des objets

Poshboard est fournit avec un Snapin PowerShell contenant différents cmdlets. Ces cmdlets permettent de créer des objets compatibles avec le rendu de contrôles Silverlight dans PoshBoard. Les propriétés/méthodes utilisées pour ces cmdlets sont équivalentes aux propriétés que l’on peut trouver dans les contrôles Silverlight.

La logique des objets Silverlight est respecté le plus possible (ou simplifier pour les besoins de PoshBoard): vous trouverez dans les objets Silverlight (dans un projet dans votre Visual Studio par exemple) des propriétés portant le même nom que les propriétés des cmdlets.

Ceci permet de faciliter l’adaptation à l’outil pour un codeur PowerShell, tout en gardant une cohérence avec le modèle cible : vous pouvez vous aider d’exemples de code Silverlight pour créer vos contrôles.

clip_image002

Note: Toute les propriétés des contrôles Silverlight ne sont pas reproduites, ceci pour plusieurs raisons :

  • Certaines propriétés ne sont pas utiles dans le contexte de PoshBoard et complexifieraient le modèle et l’adaptation.
  • La volonté d’éviter des processus de reflection sur les objets Silverlight dans un premier temps, pour garder de bonnes performances.
  • Ou parfois simplement par manque de temps ;-)

L’idée maitresse est de conserver un modèle simple, facile à comprendre. Dans le futur, si de nouvelles propriétés apparaissent comme utile, elles seront ajouter à la solution dans de futures mise-à-jour.

Les développeurs .NET ayant déjà une petite expérience avec le développement Silverlight pourront facilement créer les correspondances en PowerShell.

Relation entre le Snapin, PoshBoard et Silverlight

Poshboard utilise WCF (httpPollingDuplex et BasicHttpBinding) pour établir la communication entre le client Silverlight et le serveur. Les objets PowerShell sont créés par les scripts initié par l’administrateur, et ces objets sont ensuite convertis en contrôles Silverlight dynamiquement dans l’interface.

Vous pouvez par ailleurs utiliser tout type de code PowerShell lors de la création de vos interfaces : ceci permet de profiter du dynamisme de PowerShell pour définir les paramètres des contrôles Silverlight et du contenu.

clip_image002[5]

Relation entre WCF, PowerShell et PoshBoard

Installation du snapin

L’installation est simple. Vous n’avez pas besoin d’installer PoshBoard pour utiliser les cmdlets : vous pouvez utiliser la console pour créer vos interfaces sous forme d’objets PowerShell.

Voici comment l’installer :

Copier les 2 dll’s du fichier zip dans un repertoire de votre serveur ou station de travail (exemple : c:\ressources)

Lancer la ligne de commande suivante (avec les droits admins pour Vista / 2K8 / Seven) :

x86 :

c:\Windows\Microsoft.NET\Framework\v2.0.50727\installutil.exe c:\ressources\poshboard.dll

x64:

c:\Windows\Microsoft.NET\Framework64\v2.0.50727\installutil.exe c:\ressources\poshboard.dll

(x64 : lancer aussi la première ligne pour rendre le snapin disponible côté PoshBoard)

Ouvrez maintenant une console PowerShell et tapez :

Add-PSSnapin poshboard

List all cmdlets

get-command *PB*

 

Les cmdlets

Voici la liste des cmdlets :

Cmdlets

Description

 

New-PBAgDataGrid

Créer une DataGrid Silverlight (basé sur le contrôle AgDataGrid)

clip_image002[10]

New-PBButton

Créer un bouton Silverlight

clip_image004

New-PBChart

Créer un element graph (basé sur Visifire)

clip_image006

New-PBComboBox

Créer une ComboBox Silverlight

clip_image008

New-PBContainer

Créer une Grid Silverlight (le containeur de type “grille” pour les autres contrôles)

clip_image010

New-PBDataSerie

Créer un objet DataSerie (utilisé pour les objets charts Visifire)

clip_image006[2]

New-PBElement

Créer un objet vide (sans type ni propriétés, évènements spécifiques)

clip_image011

New-PBEvent

Créer un évènement (pouvant être intégrer aux objets dérivés de PBElement)

clip_image012

New-PBFlipBook

Créer un FlipBook (basé sur le contrôle SLMItsu Flip Page)

 

New-PBGridData

Créer un objet de données pour une  PBDataGrid

clip_image013

New-PBTextBlock

Créer un bloc de texte Silverlight

clip_image015

New-PBTextBox

Créer une TextBox Silverlight

clip_image017

Add-PBDataSerie

Ajouter un objet PBDataSerie à un objet PBChart

clip_image006[3]

Add-PBElement

Ajouter un élément (dérivé de PBElement) à un containeur type PBContainer

clip_image010[1]

Add-PBEvent

Ajouter un objet Evenement à un contrôle

clip_image012[1]

Add-PBGridData

Add un objet données (PBGridData) à un objet PBDataGrid

clip_image002[11]

Nous verrons dans le prochain post ces objets dans le détail, et comment créer vos premiers widgets.