[PowerShell] PowerShell et WPF…… Hyper Cool….

29 08 2009

Cela fait plusieurs fois que je publie des scripts basé sur PowerShell, même si je m’attache souvent à en faire un Windows Forms, l’aspect graphique reste un peu… comment dire… plat! Et comme me dit Christopher, il y a un effort à faire au niveau du GUI. Tout à fait d’accord! Alors pourquoi ne pas essayer de rendre ces scripts dans une interface plus sympa en WPF????

Le but dans cet article n’est pas de décrire WPF, il y en a assez aujourd’hui sur Internet, mais de décrire comment je vais utiliser  WPF et récupérer les contôles dans Powershell.

Pour commencer, mettons en place un simple Canvas dans Visual Studio avec une ComboBox et une TextBox. Voila ce que cela donne dans Visual:

wpf

Du côté du code XAML:

<Window
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  Title="WPF Powershell Get-Command" Height="300" Width="500">
<Canvas>
<ComboBox Name="MyDrop" Height="25" Width="200" Canvas.Top="10" Canvas.Left="10" >
</ComboBox>
<TextBox Name="Mytexte" Height="100" Width="480" Canvas.Top="40" Canvas.Left="10" IsReadOnly="True">
 Mon Texte
</TextBox>
</Canvas>
</Window> 

Du côté de PowerShell comment intégrer cette interface plus sympa? En fait c’est assez simple, mais il y a des contraintes, qui sont les suivantes:

Pour faire fonctionner le processus PowerShell en mode STA, il suffit de lancer la commande ‘Powershell.exe –STA’ dans une invite de commande.

Récupérez le code XAML généré dans Visual Studio et l’utiliser comme valeur de variable de type XML dans PowerShell. Voici un script, totalement commenté, PowerShell qui utilise le code XAML généré dans Visual Studio:

Le résultat en image…

wpf_PowerShell

#################################################################
# Chargement des Librairies
#################################################################
[Reflection.Assembly]::LoadWithPartialName("PresentationFramework")
[Reflection.Assembly]::LoadWithPartialName("PresentationCore")
[Reflection.Assembly]::LoadWithPartialName("WindowsBase")
#################################################################

#----------------------------------------------------------------
# Simple Get-Command utilisé pour peupler la DropDownBox dans WPF
#----------------------------------------------------------------
$My=get-command get-*
#----------------------------------------------------------------

#----------------------------------------------------------------
#Le code XAML envoyé dans une variable PowerShell
#----------------------------------------------------------------
[xml]$xaml = '
<Window
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  Title="WPF Powershell Get-Command" Height="300" Width="500">
<Canvas>
<ComboBox Name="MyDrop" Height="25" Width="200" Canvas.Top="10" Canvas.Left="10" >
</ComboBox>
<TextBox Name="Mytexte" Height="100" Width="480" Canvas.Top="40" Canvas.Left="10" 

IsReadOnly="True" TextWrapping="Wrap" VerticalScrollBarVisibility="Auto" Foreground="Red">
 Mon Texte
</TextBox>
</Canvas>
</Window>
'
#--------------------------------------------------------------

#--------------------------------------------------------------
#Déclaration du code XML et de la Forms
#--------------------------------------------------------------
$wpf=(New-Object System.Xml.XmlNodeReader $xaml)
$Form=[Windows.Markup.XamlReader]::Load( $wpf )
#--------------------------------------------------------------

#-------------------------------------------------------------
#Récupération des contrôles WPF dans PowerShell
#-------------------------------------------------------------
$btndrop = $Form.FindName('MyDrop')
$Output = $Form.FindName('Mytexte')
#-------------------------------------------------------------

#-------------------------------------------------------------
#Boucle sur le Get-Command pour chacune des commandes existantes
#Envoi de chacune des commandes dans le DropDownBox
#-------------------------------------------------------------
foreach ($une in $My)
{
$btnDrop.Items.Add($une)| out-null
}
#-------------------------------------------------------------

#-------------------------------------------------------------
#Ajustons une propriété du contrôle TextBox
#-------------------------------------------------------------
$btnDrop.ToolTip = "Sélectionnez le DropDownBox"
#-------------------------------------------------------------

#-------------------------------------------------------------
# Recupération de l'événement SelectionChanged du contrôle
#-------------------------------------------------------------
$btnDrop.add_SelectionChanged({$Output.AppendText("Alors! Elles seront plus jolies les interfaces de mes scripts PowerShell maintenant!")})
#-------------------------------------------------------------

$Form.ShowDialog() | out-null

Dans le controle DropDownBox, se trouve le résultat du ‘Get-Command’ que nous avons envoyé:

WPF_PowerShell DropDownBox

Après plusieurs événements sur le contrôle….

WPF_PowerShell TextBox

Dans PowerShell, le type des contrôles est récupérable, ainsi que les méthodes, les événements est les propriétés:

GetType WPF

 WPF_PowerShell Events

Je vais pouvoir refaire tous mes scripts PowerShell en WPF sous Visual Studio… Euh! Non en fait, je n’aurais jamais le temps de les refaire tous… Vivement les prochaines vacances!

Technorati Tags: ,,,




[SharePoint] Plugin Sharepoint pour les mobiles

19 08 2009

”Mobile Entrée™ (ME) is a server-side plugin to SharePoint that provides mobile users access to sharepoint data as well as custom applications. Out-of-the-box, ME provides mobile access to Lists and Document Libraries. ME also has an available API for developing your own mobile-enabled applications."

http://www.mobileentree.com

Technorati Tags: ,,

Bookmark and Share





[OCS 2007 R2] Communicator Mobile R2 disponible

18 08 2009

Microsoft vient de mettre en ligne la release R2 de son communicator mobile pour OCS 2007 R2. Celui-ci fonctionne sous Windows Mobile 6 et sur les mobiles ayant compatible java.

Getcomo

Deux version sont disponible pour Windows Mobile:

  • Standard Edition
  • Entreprise Edition

 

comoedition

Et bien sur de nouvelles fonctionnalités:

  • Numéro unique pour les communications professionnelles
  • Définir les options de transfert d’appel sur votre appareil mobile
  • Appel via le bureau à partir de la liste des contacts de votre appareil mobile

Mais aussi des pré-requis d’installation:

requis

Côté client Java, également des pré-requis:

ComoJava

Procurez-vous cette nouvelle version de Communicator Mobile.

Get COMO 2007 R2

Bookmark and Share





[SharePoint] SharePoint Content Deployment Wizard

17 08 2009

Voici la dernière version d’un outil d’import et d’export pour SharePoint .

Extrait du site codeplex: SharePoint deployment Wizard

The SharePoint Content Deployment Wizard is a tool for SharePoint 2007 which provides the means to deploy the following content:
- site collections
- webs
- lists
- folders
- list items (including files)
Content is exported using the Content Migration API (PRIME) as a .cmp file (Content Migration Package) which can be copied to other servers for import. Unlike the out-of-the-box tools, the Wizard allows *granular* selection of content via a treeview.

CDW_ExportSelect

N’hésitez pas à consulter le site de l’auteur.

Chris O’Brian





[SharePoint] First Contact With SharePoint 2010 (CodeName FourTeen)

13 08 2009

Encore relativement difficile de trouver des informations sur cette nouvelle mouture de SharePoint. Stressant!!! Oui, pour les gens, comme moi, qui sont impatient de l’avoir entre les mains, de s’amuser, la triturer un peu…

Certes vous pouvez retrouver des informations sur les différents sites officiel de Microsoft, surtout sur le blog de l’équipe produit, ainsi que les divers blogs des MVP SharePoint, dont quelques liens se trouvent ci-dessous:

Microsoft SharePoint Blog MSDN SharePoint
Club Moss 2007 Live Space d’Erol Giraudy
Club Office 2010 SharePoint Québec
Le Blog de Philippe Sentenac  

Mais il n’en reste qu’aujourd’hui, encore, assez peu d’informations sont apparu officiellement, ni même sur la toile.

Aucune capture d’écran, ni autres informations concrètes, etc.!

A force de glaner, sur tous les sites du web depuis maintenant plusieurs jours, je vous livre donc le résultat de mes recherches, ainsi que les diverses captures d’écran trouvé, par-ci par là, sur la toile!

ATTENTION!!! N’ETANT PAS l’AUTEUR DE CES IMAGES, JE NE PEUT EN GARANTIR L’EXACTITUDE!

  • Premières images du ‘Launcher’

 Screen Installation MOSS14

Nouvelle interface d’installation, digne des nouveaux produits Microsoft, comme la gamme System Center, Exchange, etc.

  • Un outil de préparation d’installation (Pré-requis)

PreparationToolMoss14

A priori, une liste de pré-requis assez importante avant l’installation!

    • Rôle IIS
      • The “Geneva” Framework is a framework for building identity-aware applications.  The framework abstracts the WS-Trust and WS-Federation protocols and presents to developers APIs for building security token services and identity providers. Applications can externalize the authentication logic to security token services and focus on application specific logics that are based on claims available in the security tokens. Applications can use the framework to process tokens issued from security token services and make identity-based decisions at the web application or web service.

    • Microsoft Sync Framework Runtime 1.0

    • Chart Controls pour le framework 3.5

    • Microsoft Filter PAck 14 (IFilter) MS-Filter Pack

    • Client SQL Serveur 2008

    • Les API OCS 2007 R2 et Unified Communications Speech 2.0

    • Speech Server Language Pack V6.0

  • Une partie du File System de MOSS 2010
WordServerMoss14

 

 

Un dossier WordServer??? Avec des Services???

PassPhraseMoss14

Une clé symétrique de chiffrement des données de configuration dans la base???

WizardConfigMoss14

Un assistant de configuration ???

TemplatesFastMoss14  Les modèles de sites habituels et…. Un modèle FAST Search Center!!!

smile_regular smile_teeth star

Le moteur FAST aurait donc bien été intégré

SiteAdminMoss14 L’administration d’une collection de site ????

Voila le résultat de mes pérégrinations sur SharePoint 2010 à travers la toile. Vite, Vite, Monsieur Microsoft donnez nous une Beta!!!!!

Bookmark and Share





[SharePoint] Cas d’étude – MOSS 2007 en mode Haute Disponibilité avec SQL Server 2005 Database Mirroring sous environnement virtuel avec Hyper-V

7 08 2009

Beaucoup d’environnement de production requière la disponibilité permanente des informations, des documents et autres applications métiers de l’entreprise, il en va de même pour les infrastructures utilisant SharePoint 2007.

La pérennité des fermes SharePoint et des données utilisateurs tient dans l’intégrité des bases de données de la ferme! Et l’accès à l’information pour les utilisateurs tient à la disponibilité des composants de la ferme SharePoint, a savoir:

  • Les serveurs Webs Frontaux
  • Les serveurs d’applications SharePoint
  • Les serveurs de base de données SQL

Dans SharePoint 99% des actions à travers le portail sont des transactions… (Transactions au sens SQL serveur du terme)

La plupart des actions que font les utilisateurs, durant les phases de travail (ouverture de document, Extraction, Archivage, modification, etc…), génèrent des transactions qui remettent à jour les données dans la base de contenu de l’application web correspondante.

D’ou l’importance d’avoir une architecture SQL Serveur qui soit à la fois, certes, performante, mais également hautement disponible afin que les utilisateurs puissent toujours accéder à leurs données.

Microsoft vient de sortir un nouveau ‘Case Study’ ‘(Cas d’étude) permettant la mise en place d’une infrastructure SharePoint 2007 avec un environnement SQL Serveur monté en mode Database Mirroring sous Hyper-V.

Database Mirroring:

Dans un environnement SQL de database Mirroring, les transactions sont envoyés directement d’un serveur, dit principal, vers un autre serveur SQL, dit Miroir, afin qu’il traite les mêmes transactions que le serveur principal.

Il existe 3 types d’implémentations du Database Mirroring:

  • Mode Asynchrone ou Mode Haute Performance (Basculement forcé)
  • Mode Synchrone ou Mode Haute Protection (Basculement Manuel)
  • Mode Synchrone avec témoin ou Mode Haute Disponibilité (Basculement manuel ou automatique)

Voici un rapide schéma tiré du site Technet:

 

grid.ai

 

 

 

   Database Mirroring Overview

 

 

 

 

Voici une vue d’ensemble tiré de ce cas d’études, sur l’implémentation des Serveurs SQL dans Hyper-V:

ImplementationHD

Retrouvez le guide complet de ce cas d’étude directement sur le site Microsoft.

Case Study

Case Study (Docx)

Case Study (Pdf)

Bookmark and Share