Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Julien Chable

He blogs, you blog, I blog ...

[SharePoint 2010] Insérer le numéro de version SharePoint dans un document

Une question posée aujourd’hui qui m’a laissé perplexe : comment fait-on pour intégrer le numéro de version SharePoint dans le document ? Dans un précédent post, je vous avais présenté l’insertion des propriétés serveur. Malheureusement, cette propriété n’est pas disponible dans les champs à insérer.

La démarche consiste à utiliser un type de contenu et la fonctionnalité de stratégie de gestion des informations de SharePoint Server (SP Foundation est donc exclut).

Voici une méthode permettant de contourner ce manque :

  1. Dans la bibliothèque de documents :
    1. Activer la gestion des versions
    2. Activer les types de contenu
  2. Créer un nouveau type de contenu OU modifier un type de contenu existant OU dans un type de contenu que vous avez rattaché à la bibliothèque :
    1. Aller dans ‘Paramètres de la gestion de la stratégie des informations’
    2. Activer les étiquettes
      1. Attention : ne cochez pas les deux cases juste en dessus
      2. Donner le format suivant (le format sera “Version : 0.1” par exemple) : Version : {Version}
      3. Si vous actualisez l’aperçu, vous aurez une chaine de la forme Version : {_UIVersionString} : c’est normal !
    3. Enregistrer la modification
  3. Créer ou ouvrir un document existant dans votre bibliothèque :
    1. Menu Insérer > QuickPart > Propriétés du document > Etiquette :

image

Après enregistrement le numéro de version sera inséré :

image

Bonne lecture

[SharePoint 2010] Cumulative Update de Décembre disponible

Et oui nous sommes déjà en fin d’année et quoi de mieux de la part du père Noël qu’un petit CU qui va bien (et en avance) :

http://blogs.msdn.com/b/joerg_sinemus/archive/2011/12/14/sharepoint-2010-and-december-2011-cu.aspx

Les photos du MS Day Nouméa

SharePoint a bien atteint les coins les plus reculés du monde et notamment Nouméa avec cette édition qui a permis aux partenaires de s’exprimer sur leur sujet de prédilection : Lync, SharePoint, Project, Cloud, etc.

Tout ça accompagner par une XBOX 360 et la bonne humeur locale des invités.

Préparation de la salle

Une salle dans un hotel 4* fraichement ouvert, des affiches Microsoft partout, des petits-fours et des rafraichissement, nous voici bien dans un évènement Microsoft :

IMG_5933 (Medium)

IMG_5935 (Medium)

Je vous l’accorde nous ne sommes pas dans un TechDays parisien avec une salle de 200 personnes ou plus en délire. D’un certain point de vue, tant mieux, cela ne fait que renforcer la proximité avec son audience et rendre les sessions plus interactives.

SharePoint Server 2010

Le produit phare du moment de Microsoft a eu le droit à deux sessions (niveau 100/200) :

  • Découverte des 10 fonctionnalités : GED, ECM, Recherche, etc  - Kelios Solutions
  • Les 10 points clé de la réussite d’un projet SharePoint 2010 – Kelios Solutions

P1070019

(merci à Paul-Jorge pour les photos, il faudra investir dans un vrai appareil et plus dans une XBOX 360 pour l’année prochaine)

(pour ceux qui l’aurait reconnu, j’ai eu l’occasion de présenter les sessions avec un super polo MVP !)

Et Project Server 2010 dans tout ça ?

Project Server 2010 n’est pas non plus en reste avec une belle prestation de Yves Zeegers (société GPS²) :

IMG_5938 (Medium)

IMG_5940 (Medium)

A l’année prochaine (ou avant … Clignement d'œil ) !

MSDay Nouméa 06/12 : SharePoint à l’honneur

Après avoir été reporté, le voici enfin : le MSDay Nouvelle Calédonie ! La date est arrêtée au 06 Décembre au Royal Tera à partir de 7h30

Kelios Solutions, par la personne de Pierre TATOT et moi-même présenteront deux sessions pendant cette journée :

  • Le top 10 des fonctionnalités SharePoint
  • La gouvernance : comment réussir votre projet SharePoint ?

Ce dernier titre ce jeu volontairement provocateur. Basé sur notre retour d’expérience et ceux de nos confrères, cette session aura pour objectif de présenter les bonnes pratiques et d’en identifier les mauvaises qui permettront aux entreprises désireuses d’implémenter SharePoint Server 2010 (collaboration, recherche, GED, facing site, BI, etc) de partir sur un bon pied et de de garantir une certaine efficacité dans leur projet.

L’agenda des sessions se trouve ici : http://www.microsoft.com/africa/caledonia/opendoor/homepage.aspx

[SharePoint 2010] Le Cumulative Update d’Octobre 2011 de SPF et SPS 2010 est sortie

Vous pouvez retrouver ce dernier Cumulative Update sur le site des mises à jour officiel de SharePoint 2010: http://technet.microsoft.com/en-us/sharepoint/ff800847

image

Au programme, quelques corrections attendues notamment quelques problèmes avec les packs de langue. A n’appliquer que si vous rencontrez les problèmes listés dans la KB.

[SharePoint 2010] Supprimer les webparts ‘Accès refusé’ de vos pages

Microsoft n’ayant pas encore penser à intégrer cette fonctionnalité dans leur produit de collaboration phare d’entrée de gamme : SharePoint Foundation, voici un moyen de supprimer les webparts de liste pour lesquels l’utilisateur n’a pas accès au contenu (le contenu de la webpart donne un “Accès refusé” comme contenu) :

  
        function runOnLoad() {
            $(".s4-wpTopTable:has(div:contains('Accès refusé'))").hide();
        }
        _spBodyOnLoadFunctionNames.push("runOnLoad");
  

Ce rapide script JQuery peut être intégré dans vos master page (n’oubliez pas d’inclure le lien vers la librarie JQuery également !) et même s’il ne reste pas très élégant, cela fonctionne pour les utilisateurs n’ayant pas l’édition SharePoint Server et son mécanisme des audiences.

Introduction à SharePoint 2010 Word Services

Voici un article qui avait tendance à prendre la poussière sur mon disque dur. Le voici donc :

Le traitement des documents bureautiques est devenu aujourd’hui un véritable enjeu stratégique pour les entreprises. Pour gérer le volume d’informations stockées dans ce type de documents et leurs échanges, les besoins d’automatisation des traitements des documents bureautiques (génération, modification en masse, consolidation des informations, conversion en PDF pour archivage, etc) deviennent de plus en plus complexes et critiques pour les entreprises.

Avant l’arrivée de Word Services au sein de la plateforme SharePoint 2010, Microsoft préconisait par le biais d’un article - http://support.microsoft.com/kb/257757 - l’utilisation de Word avec Office Automation sur un serveur de production. Bien que l’article précise que cette utilisation d’Office n’est pas une solution fiable et efficace, il détaille malgré tout comment procéder ! L’arrivée de Word Services au sein de SharePoint 2010 et du format Open XML, et de son SDK associé, devrait mettre ce type de pratique au placard. Microsoft propose enfin une solution côté serveur efficace, performante et sécurisée et allant bien au-delà de ce que propose l’utilisation d’Office client sur un serveur.

Remarque : pour les autres formats Office (Excel, PowerPoint et Visio), il existe d’autres services inclus dans SharePoint Server 2010 ; néanmoins, ces sujets dépassent le cadre de cet article.

Parmi les avantages de cette nouvelle solution, on retrouve les avantages suivants :

· Performance : Word Services a été conçu pour s’exécuter côté serveur : sans interface utilisateur à charger, sans boîte de dialogue bloquant l’exécution du traitement, … pour faire juste ce que le traitement demande et en consommant juste les ressources nécessaires. La gestion des threads et des processeurs multi cœur par le service permet d’exploiter véritablement les capacités de votre serveur pour obtenir une rapidité de loin la plus rapide du marché.

· Fiabilité et scalabilité : Le serveur n’a plus besoin de charger/décharger en mémoire une instance de Word ou d’Excel : limitation des entrées/sorties disque, charge mémoire constante et modèle objet optimisé pour un traitement serveur (le modèle objet n’est pas celui d’Office Automation). Word Services sait traiter des files importantes de documents sans problème de concurrence et de façon totalement centralisée. Enfin, ce service est compatible et respecte à 100% l’application Word client (mise en page, pagination, etc).

· Extensibilité : Word Services possède des APIs propres qui conjointement utilisé avec le SDK Open XML permet de créer des solutions sans limite.

Présentation Word Services

Vous rêvez de pouvoir générer des documents Office en masse, de convertir des documents en PDF ou XPS, de rafraichir les champs d’un document ou de convertir des documents Office en XML, HTML ou au format Open XML et plus encore ? Voici quelques possibilités de Word Services.

Le service Word ne fournit que la partie service des traitements communs décrit précédemment. Pour les traitements de modification, de consommation ou de génération de document à partir d’une logique propre (génération d’un catalogue, ajout d’un filigrane, etc) vous devrez vous orienter vers une autre API : celles du SDK Open XML. Le SDK Open XML offre une API complète pour manipuler des documents Open XML (Word, Excel et PowerPoint 2007 ou 2010), et cela sans nécessiter une quelconque instance d’Office. Conjointement utilisé avec Word Services, vous disposez d’un éventail de solutions conséquentes pour répondre aux problématiques les plus complexes que vous pouvez rencontrer dans les entreprises aujourd’hui.

Dans cet article nous allons nous pencher sur les cas utilisateur les plus courants :

· Conversion d’un document Word en PDF/XPS

· Générer un document Word

· Paginer un document

· Rafraichir les champs d’un document

Configurer son projet Visual Studio 2010

L’utilisation de Word Services dans un projet Visual Studio, dans notre cas la version 2010, nécessite l’ajout de deux assemblys : Microsoft.Office.Word.Server et System.Web.DataVisualization.

Ces DLLs se situent à deux endroits différents sur le disque dur. La première DLL Microsoft.Office.Word.Server se trouve dans le répertoire 14 de SharePoint à l’emplacement suivant : C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI\ Microsoft.Office.Word.Server.dll

image

La seconde DLL se situe à l’emplacement, peu commun, suivant : C:\Windows\assembly\GAC_MSIL\System.Web.DataVisualization\3.5.0.0__31bf3856ad364e35\System.Web.DataVisualization.dll

image

Une fois ajoutées ces deux assemblys, les références de votre projet devrait être proche de la capture d’écran suivante :

image

Les espaces de noms de Word Services

Le service Word possède plusieurs espaces de nom dans son assembly Microsoft.Office.Word.Server :

· Conversions : contient tous les objets nécessaires à la conversion de documents par Word Services.

· Powershell : contient les commandlet Powershell. Au moment de l’écriture de cette article avec la Beta 2, seule une commande est disponible.

· Service : permet de configurer le service Word Services.

Convertir un document Word en PDF, XPS, HTML, etc

Convertir un document est aujourd’hui aussi simple que quelques lignes de .NET grâce à Word Services, et surtout une multitude formats est supportée aussi bien en entrée qu’en sortie.

Les formats supportés en entrée sont les suivants :

  • Word 97-2003 (doc et dot) voire plus ancien
  • Office Open XML 2007-2010 (docx, docm, dotx, dotm)
  • Le RTF (Rich Text Format)
  • HTML et MHTML (page html et ressources regroupées dans un fichier unique)
  • Word 2003/2007/2010 XML

Les formats supportés en sortie de conversion sont les suivants :

  • Word 97-2003 (doc)
  • Office Open XML 2007-2010 (docx, docm)
  • Le RTF (Rich Text Format)
  • MHTML (page html et ressources regroupées dans un fichier unique)
  • Word 2007/2010 XML
  • PDF
  • XPS

L’espace de nom nécessaire pour utiliser les objets liés à la conversion de documents est Microsoft.Office.Word.Server.Conversions. Pour effectuer une ou plusieurs conversions, vous devez soumettre une tâche – un ‘job’ - au service. L’API de Word Services propose la classe ConversionJob. Son utilisation est assez simpliste une fois que vous avez référencé les DLLs nécessaire dans votre projet. Pour convertir un document Word Office open XML 2010, les quelques lignes de code qui suivent sont nécessaires :

ConversionJob job = new ConversionJob("Word Automation Services");

job.Name = "PDF archive generator";

job.UserToken = properties.Web.CurrentUser.UserToken;

job.Settings.UpdateFields = true;

job.Settings.OutputFormat = SaveFormat.PDF;

string itemUrl = properties.Web.Url + "/" + properties.ListItem.Url;

job.AddFile(itemUrl, itemUrl + ".pdf");

job.Start();

Le code ci-dessus effectue le travail de récupération de l’instance du service Word Services, du passage des droits de l’utilisateur (via le UserToken), de spécification du format de sortie et du fichier à convertir. Pour finir, vous devez appeler la méthode Start() d’exécution de la tâche.

Comme alternative, vous pouvez également spécifier un répertoire ou une bibliothèque de documents dans son intégralité en utilisant les méthodes AddFolder() et AddLibrary().

Une fois la tâche de conversion lancée, après appel à la méthode Start(), vous pouvez demander au service l’avancement de la tâche de conversion. Pour cela, vous disposez de la classe ConversionStatus et de ses méthodes GetAllActiveJobs() et GetAllJobs().

Le code suivant permet de récupérer les statuts des tâches de conversion lancées par Word Services dans les dernières vingt-quatre heures :

public string CheckWordServicesJobsStatus()

{

StringBuilder sb = new StringBuilder();

ReadOnlyCollection<ConversionJobInfo> jobsInfo =

ConversionJobStatus.GetAllJobs("Word Automation Services", null);

if (jobsInfo.Count == 0)

return "Aucune tâche de conversion en cours";

foreach (ConversionJobInfo info in jobsInfo)

{

// On ne prend que les conversions des dernières 24 heures

if (info.SubmittedTime.AddDays(1.0).CompareTo(DateTime.Now) < 0)

continue;

ConversionJobStatus jobStatus = new ConversionJobStatus("Word Automation Services", info.JobId, null);

string s = jobStatus.Name + " - (" + jobStatus.Count + " documents) - " +

"Annulé (" + jobStatus.Canceled + ") Echoué (" + jobStatus.Failed + ") En cours (" + jobStatus.InProgress + ") Non démarré (" +

jobStatus.NotStarted + ") Réussi (" + jobStatus.Succeeded + ")<br/>";

sb.Append(s);

}

return sb.ToString();

}

L’affichage du résultat du code précédent dans une Webpart pourrait être le suivant :

image

Vous pouvez annuler une tâche de conversion en faisant appel à la méthode Cancel() de la classe ConversionJob.

Pour aller plus loin

Voilà pour une première partie permettant de démarrer avec Word Services. Combiné au SDK Open XML, la puissance de Word Services devrait vous permettre de satisfaire bon nombre de vos besoins. On pourra seulement regretté le manque de synchronisation ou d’évènement de call back à la fin d’une conversion ou d’un traitement de groupe.

[SharePoint 2010] Bug javascript ‘g_ExpGroupXSLTQueue’ du Service Pack 1 de la version Française

Update : le hotfix est disponible à cette adresse : http://support.microsoft.com/kb/2553117/en-us (merci Gribouillon)

Tout ceux qui ont déployé le SP1 en langue Française (que ce soit pour une migration ou une fresh install) ont peut-être constaté certains problèmes :

- Les regroupements des vues ne fonctionnent plus (la première fois, tout fonctionne, après rafraichissement de la page, les éléments des groupes n’apparaissent plus et il n’est plus possible d’ouvrir/fermer les groupes)

- Problème de lenteur à l’ouverture de la fenêtre ‘Télécharger un document’

- Problème de lenteur général dans l’affichage des listes, voire un freeze/plantage d’IE

Pour les utilisateurs d’Internet Exporer (Firefox ne remontant jamais les problèmes de javascript par défaut), vous devriez avoir un message similaire à “g_ExpGroupXSLTQueue' is undefined”.

Le problème remonté depuis quelques semaines à Microsoft n’a toujours pas, semble t-il, trouvé de correctif officiel (dès que le correctif est publié, je mettrai à jour ce post). Le problème se situe dans les script core.js SP1 des langues non anglaises (Français, Italien, etc) et notamment dans les versions de code (14.0.4762 => 14.0.6009 ; merci David pour cette précision).

En effet, ce bug n’apparait pas dans la version anglaise des scripts. Par conséquent, afin de contourner ces soucis assez critique pour les utilisateurs, voici une méthode :

  1. Installer le pack de langue anglais EN
  2. Extrayez les fichiers init.js et init.debug.js contenus dans le répertoire “14\TEMPLATE\LAYOUTS\1033” et coller les (après avoir sauvergarder les versions localisées que vous allez remplacer) dans le répertoire “14\TEMPLATE\LAYOUTS\<LanguageID” soit pour les Français “14\TEMPLATE\LAYOUTS\1036”.

Après application de ces scripts :

  • Le problème disparait …
  • … mais les libellés des actions des menus contextuels se mettront en anglais. Charge à vous de traduire les quelques libellés qui posent problème avec un bon éditeur de texte ou de JS.

Voilà une méthode de contournement pas trop complexe à mettre en oeuvre, en attendant le correctif officiel …

[SharePoint 2010] Récupérer la date d’un répertoire pour mettre à jour une propriété d’un document

Un petit script prenant le nom d’un répertoire similaire à :

XYZ_110904_ABC

et permettant d’extraire la date (ici “110904”) et de la spécifier comme propriété (ici la propriété “Date de la revue”) sur les documents contenus dans le répertoire parent.

if(-not(Get-PSSnapin "Microsoft.SharePoint.PowerShell" -ErrorAction SilentlyContinue | Where {$_.Name -eq "Microsoft.SharePoint.PowerShell"}))
{
    Write-Host "Chargement de la librairie SharePoint pour PowerShell"
    Add-PSSnapin Microsoft.SharePoint.PowerShell
}

$web = Get-SPWeb http://companyweb
$listRP = $web.Lists["Revue de presse"]

# On récupère uniquement les répertoire contenant 6 chiffres dans leur nom
$listRP.Folders | ? { $_.Name -match "(?<num>\d{6})" } | % {
    $_ -match "(?<num>\d{6})" | out-null ;
   
    Write-Host "Update => " $_.Name
    $year = 0;
    $month = 0;
    $day = 0;
    [System.Int32]::TryParse($matches[0].Substring(0,2), [ref] $year)
    [System.Int32]::TryParse($matches[0].Substring(2,2), [ref] $month)
    [System.Int32]::TryParse($matches[0].Substring(4,2), [ref] $day)
   
    $year = $year+2000 # 11 => 2011
    $revueDate = New-Object System.DateTime($year, $month, $day)
  
    $files = $_.Folder.Files
   foreach ($file in $files)
   {
        Write-host "Traitement du fichier ==> " $file.Name
       
        $file.Item["Date de la revue"] = $revueDate
        $file.Item.Update();
   }
}

Si cela peut vous sauver quelques minutes de votre longue journée !

[SharePoint 2010] Mettre à jour le type de contenu des documents d’une bibliothèque avec PowerShell

Beaucoup de travail, beaucoup de nouvelles astuces à partager mais pas beaucoup de temps pour le faire, voici ce qui devrait changer dans les prochaines semaines.

Pour la reprise, voici quelques scripts PowerShell qui pourrait vous épargner quelques minutes d’écriture. Le premier très simple (je n’ai pas le niveau de notre SPAdmin préfére Fabrice69), pour changer le type de contenu de documents contenus dans un répertoire récemment migré :

if(-not(Get-PSSnapin "Microsoft.SharePoint.PowerShell" -ErrorAction SilentlyContinue | Where {$_.Name -eq "Microsoft.SharePoint.PowerShell"}))
{
    Write-Host "Chargement de la librairie SharePoint pour PowerShell"
    Add-PSSnapin Microsoft.SharePoint.PowerShell
}

$web = Get-SPWeb http://companyweb
# La liste contenant les documents à mettre à jour
$listRP = $web.Lists["Revue de presse"]

# On prend que certains répertoires (ici ceux contenant le nom de notre journal local)
$folders = $listRP.Folders | where { $_.Name -like "*LNC*" }
foreach ($folder in $folders)
{
   Write-Host "Mise à jour répertoire => " $folder.Name
  
   $files = $folder.Folder.Files
   foreach ($file in $files)
   {
        Write-host "Traitement du fichier ==>" $file.Name
       
        if ($file.Level -eq [Microsoft.SharePoint.SPFileLevel]::Checkout)
        {
            $file.CheckIn("Archiver par le système")
        }
        
        # Créez le type de contenu dans les types de contenu de site
        $file.Item["ID du type de contenu"] = $web.ContentTypes["Revue de Presse"].Id;
        # Champ de type choix

        $file.Item["Nom du média"] = "LNC";
        $file.Item.Update();
   }
}

Happy PS ! (Dédicace à mon coéquipier de terrain David)

Nouvelle version du site OpenXmlDeveloper.org

Le site http://openxmldeveloper.org/ commençait à prendre de l’âge, Microsoft a donc décider de le refaire du sol au plafond avec quelques nouveautés également :

  1. Système de réputation : à l’instar des forums Microsoft, l’équipe a introduit un système qui permet aux membres actifs d’être reconnus par des points, leur permettant de gagner en responsabilité et en niveau d’accès sur le site. Ce système de reconnaissance fonctionne également par ami ou par notation sur les articles des compères permet de gagner également des points.
  2. Le membre du mois (actuellement trusté par notre ami Eric White).
  3. La mise en place du CAPTCHA et du blocage d’IP qui faisait cruellement défaut.
  4. Nouveau système de mise à jour du contenu qui devrait permettre une mise à jour plus fréquente du contenu du site.
  5. Nouveaux forums avec une mise en avant dès la page d’accueil.
  6. Un feed Twitter multilingue (Français, Japonais, Anglais, Espagnol, etc).

Je vous laisse avec ce nouveau cru et la montagne de post de Eric :

image

Merci à Liza et à Doug pour cette initiative,

Bonne lecture !

Kit de démarrage Open Data OGDI (Open Governement Data Initiative) sous licence libre

On entend de plus en plus parler d’Open Data(1) en ce moment, certains en parlent même comme du frère de l’Open Source.

Néanmoins, la publication/récupération de ce contenu ‘public’ est aujourd’hui un peu fastidieux à mettre en place. C’est pourquoi pour vous aider à mettre en place une publication Open Data sur les plateformes Microsoft, l’éditeur vous propose un kit sous la forme de composants logiciels qui permettent à toute entité publique de mettre en œuvre immédiatement une approche Open Data et ainsi :

  1. De récupérer, de s’approprier et de mettre en œuvre très rapidement et à moindre coût une solution ouverte, de bout-en-bout, de publication d’informations publiques via Windows Azure,
  2. Et de publier et d’exposer sur ce socle les ensembles de données que l’entité souhaite mettre à disposition des usagers et citoyens.

Le kit de démarrage OGDI (Open Governement Data Initiative) disponible sous licence libre Microsoft Public License (Ms-PL) s’adresse, via ses différents composants et code source associé, aux architectes, aux développeurs et à tous ceux qui souhaitent exposer et/ou consommer des informations publiques.

Ce kit de démarrage OGDI localisé et mis à jour pour VS 2010/.NET4/ASP .NET MVC 3 Razor est disponible en ligne à l’adresse http://www.microsoft.com/downloads/fr-fr/details.aspx?FamilyID=420837f8-25ec-47ba-b558-b6a7f64b3348. Le kit dispose d’une documentation complète qui en facilite la mise en œuvre.  Un site exemple avec divers ensembles de données prêt à l’usage est, par ailleurs, en ligne à l’adresse http://ogdifrance.cloudapp.net.

Un nouveau blog MSDN OGDI France (http://blogs.msdn.com/b/ogdifrance/) a d’ailleurs été tout spécialement créé pour l’occasion.

(1) Quelques précisions pour bien démarrer :

Les informations publiques, ou données ouvertes (Open Data), sont aujourd’hui en termes de potentiel, d’opportunités et d’enjeu au cœur du développement de multiples innovations sociales et économiques grâce à leur mise en ligne par l’administration et les collectivités territoriales. En effet, portées à la connaissance des citoyens, des chercheurs, des associations, des entreprises, ces informations statistiques, géographiques, urbanistiques, etc. peuvent devenir des mines d’or dès lors qu’elles sont retravaillées, croisées entre elles et mises en scène et ainsi contribuer à la création de nouveaux services tout en favorisant la transparence de l’action publique.
Comme le décrit l’édition du premier trimestre 2011 du magazine RSLN - Regards sur le numérique qui propose une enquête complète sur les informations publiques, la publication et la consommation d’informations publiques sur le Web sous une forme facilement accessible par les personnes et les logiciels constitue une dimension essentielle.

OGDI utilise la plateforme Windows Azure dans le Cloud pour faciliter la publication et l'utilisation d’informations publiques variées provenant d'entités publiques (gouvernement, ministères, collectivités locales et territoriales, mairies, services déconcentrés de l'Etat, etc.). Les données sont publiées à l'aide de standards ouverts et sont facilement accessibles à partir de n'importe quelle plate-forme et depuis de très nombreux outils de consultation et d’interrogation à destination des utilisateurs finaux.

Le protocole et le format principal que le kit de démarrage ODGI utilise pour cela est appelée OData (Open Data Protocol). Ce protocole Web pour requêter et effectuer des opérations sur des données constitue une extension de technologies Web largement acceptées telles que http, XML, AtomPub, etc. Cet engagement et adhésion envers les principes fondamentaux du Web et ses standards permet à OData d’offrir une intégration des données simplifiée et un nouveau seuil en termes d’interopérabilité au travers d’un large éventail de producteurs et de consommateurs. Les spécifications du protocole OData sont ouvertes, publiques et libres d’implémentation ainsi que précisé dans l’OSP (Open Specification Promise). Pour de plus amples informations, vous pouvez consulter le site dédié à http://www.odata.org.

Le kit de démarrage OGDI peut aussi retourner les données au format JSON (JavaScript Object Notation) ou JSONP (JSON with padding) et prend également en charge le format KML (Keyhole Markup Language), un format de l'industrie largement accepté pour les données géo-spatiales, rendant ainsi le kit de démarrage OGDI compatible avec des technologies de cartographie sur poste de travail ou sur le Web, comme Géoportail, Google Earth, Google Maps, Microsoft Bing Maps, etc.
La solution consiste en trois composants principaux :

  1. Le premier composant est un chargeur de données. Une application en mode console contrôlée par des paramètres en ligne de commande, le chargement de données peut être automatisé à l'aide de scripts et intégré ainsi les processus ETL (Extract, Transform, and Load) existants. Une application graphique permet de réaliser les mêmes opérations au travers d’une interface claire et intuitive pour l’utilisateur ;
  2. L’autre composant corollaire, qui est déployé dans Windows Azure, est un service de données de type REST (Representational State Transfer). Il s’agit un point de terminaison OData en façade d’un stockage Windows Azure et en exposant les données publiées en formats OData, JSON ou KML. Les données ou le résultat d’une requête peuvent être téléchargés aux formats CSV, Microsoft Office Excel ou encore DAISY, dont le but est de rendre le contenu publié accessibles aux personnes souffrant de déficiences visuelles ou de dyslexie ;
  3. La troisième composante est un kit de développement interactif, un site Web à destination des utilisateurs finaux et des développeurs. Il consomme les informations publiques en utilisant le service de données et les exposent pour une navigation et interrogation dynamique par les utilisateurs finaux depuis un catalogue de données de l’entrepôt. Les données peuvent être visualisées dans des formats largement utilisés et reconnaissables tels que des tableaux, des cartes, des graphiques à barres ou des diagrammes circulaires. Le code source correspondant est disponible dans une variété de langages et de bibliothèques/Frameworks largement utilisés sur le Web, incluant, entre autres, C#, Flex, JavaScript, PHP, Python, Silverlight, etc. ; ce qui permet d’illustrer pour les développeurs la prise en compte de ces informations dans leurs applications ou vis-à-vis du développement de nouvelles applications qui utilisent ces informations publiques.

Le chargeur de données est destiné à s'exécuter en interne (on-premise), le service de données à être hébergé dans Windows Azure. Il en est de même par défaut pour le kit de développement interactif. Les informations publiques résident également dans le Cloud.

Le kit de démarrage OGDI correspond à l’adaptation en français accompagnée de certaines évolutions du kit de développement logiciel éponyme disponible en téléchargement sous la même licence libre sur la forge CodePlex.

Remerciements à Philippe B. pour l’information !

Here we go again : ++ MVP SharePoint Server !

“Félicitations! Nous sommes heureux de vous remettre la récompense MVP Microsoft® 2011!” : Yeah ! Pour la cinquième année consécutive, me voilà reconduit MVP dans le domaine de SharePoint Server.

C’est reparti pour un tour donc, et l’année 2011 devrait être fournie en activité communautaire ! J’en profites pour féliciter tous les renouvelés et les nouveaux arrivants.

Les inscription pour la conférence “SharePoint 2010 à l’heure des WCAG 2.0, du RGAA et d’Accessiweb 2.1” sont ouvertes

L’édition 2011 de ce séminaire qui se déroulera le 22 et 23 Mars – mais pas seulement cf à la fin - change quelque peu : maintenant sur deux jours => 1 journée présentation et 1 journée d’ateliers.

Un séminaire qui aborde les étapes de la conduite d'un projet intégrant l'accessibilité numérique, les évolutions en termes d'accessibilité introduites par les produits et technologies Microsoft avec de nombreuses démonstrations autour de Microsoft SharePoint 2010, Microsoft SharePoint 2010 Designer, Microsoft Silverlight 2+, Internet Explorer 8.0/9.0, Visual Studio 2010, etc.

La seconde journée du séminaire sera orientée vers la pratique en proposant une série d’ateliers dirigés ainsi que des compléments et éclairages techniques sur le développement de pages, de composants "WebPart" avec SharePoint 2010, du support de Silverlight 2+, etc.

À la fin de ce séminaire, vous devriez être en mesure notamment de :

  • Comprendre les WCAG 2.0, le RGAA, et AccessiWeb 2.1, et leur articulation respective,
  • Intégrer l'accessibilité dans son projet SharePoint,
  • Faire le point sur l'accessibilité (par défaut) de SharePoint 2010 et les grands axes d'évolutions dans ce domaine,
  • Comprendre les points importants vis-à-vis des développements de pages, de composants "Web part", du support de Silverlight 2+, etc.
  • Connaître et savoir utiliser les principaux outils de tests associés,
  • Et de réaliser une première évaluation de l'accessibilité de sa solution au final.

Au-delà des 22 et 23 mars 2011, d'autres sessions de ce séminaire sont programmées les :

Bonne inscription !

@Microsoft Redmond : MVP Global Summit 2011

Je profite de mon attente à l’aéroport de Seattle pour vous présenter les moments forts de ce Summit 2011, le Campus de Microsoft à Redmond ainsi que Bellevue.

Etant mon 5ème Summit et mon périple étant de courte durée (moins de 4 jours sur place et autant de vol …) pour ce cru 2011, pas de visite de Seattle cette année pour moi. Mais beaucoup de plaisir à retrouver tous mes compères et amis lors de cette réunion mondiale - que j’avais raté l’année dernière faute de temps - et à découvrir ce que nous réserve Microsoft dans les prochains trimestres/années Sourire

@MS Campus

Bien évidemment, le campus reste sous surveillance et l’emplacement des équipes  produit inconnues (d’où un changement de localisation régulier), je ne vous en dirais donc pas beaucoup sur ces quelques photos :

IMG_3523

IMG_3524

Imaginez un complexe de plus de 50 bâtiments comme celui-ci disposés les uns à côté des autres et entourés d’espaces  verts : une véritable mini ville à elle seule avec sa propre activité économique (restaurant, bar, etc).

Bellevue Downtown

De grandes avenues comme je n’ai plus souvent l’occasion d’en voir :

IMG_3532

IMG_3533

IMG_3535

Un distributeur d’iPod, iPhone et autres appareils de grande consommation … :

IMG_3538

Le Microsoft Store (malheureusement pas de Windows Phone 7 sans opérateur … MS a raté un bon coup avec ce Summit …), une véritable arène de divertissement :

IMG_3541

IMG_3544

Welcome session

Voici quelques moments forts du Summit 2011 (pour le reste bien évidemment c’est NDA) :

IMG_3509

Steve Ballmer – CEO Microsoft – répond a quelques questions :

IMG_3492

IMG_3498

Toby Richards (General Manager, Community & Online Support) nous invite au Safeco Field pour la soirée de clôture :

IMG_3507

Les MVPs SharePoint ont répondu à l’appel et aux questions des équipes produits :

IMG_3522

Soirée de clôture au Safeco Field

Après le musée de l’aviation et le musée de la musique de Seattle que nous commençons à bien connaitre maintenant, après les avoir fait plusieurs fois, nous voici invité au Safeco Field pour passer une excellente soirée :

IMG_3551

IMG_3561

IMG_3563

IMG_3567

Les vestiaires de l’équipe transformés en salle de jeux Kinect :

IMG_3572

IMG_3576

IMG_3578

IMG_3581

IMG_3591

Une dernière photo avec le “Moose” des Seattle’s Mariners avec Sébastien (ça ne se voit peut-être pas : je suis en train de geler !):

IMG_3603

Il est temps pour moi de retourner sur le caillou afin de reprendre un peu de températures (1 à 5°c à Seattle) et de couleurs ! Excellent MVP Summit 2011 malgré un voyage bien trop court !

Enjoy !

SharePoint 2010 : Résolution d’un problème javascript avec ISA Server 2004 SP2

Lors d‘une récente installation de SharePoint 2010 avec utilisation de Host Header chez un client, nous avons pu constater un bug assez dérangeant : une erreur Javascript apparaissait systématiquement (cf en bas à gauche d’Internet Explorer - à noter que Firefox ne notifie pas de ces erreurs) rendant inutilisables la plupart des commandes de l’interface, y compris le bouton ‘Actions du site’ :

image

Remarque : Quelques précisions sur “l’apparition systématique” du problème : tout fonctionnait quelque parfois, surtout avant d’aller manger et au retour l’erreur revenait …

Selon la capture d’écran, il manque de toute évidence des définitions, ce qui signifie que certains fichiers Javascript n’étaient pas été chargés par la page. Ici se posait alors deux questions :

  1. Est-ce que la master page personnalisée est en cause ou non ? => Le rétablissement de la master page WSS 4 fait persister le problème Triste
  2. Est-ce un problème d’alias, IIS, de chemin géré, etc ? Après avoir tout vérifié dans le DNS, IIS et l’administration centrale de SharePoint (et PowerShell) => rien à redire sur la configuration …

Après avoir validé ces points, il y a peu de chance que SharePoint soit en cause surtout sur une plateforme nouvellement installée (en respectant au mieux toutes les bonnes pratiques du moment). Immédiatement vient donc les questions sur l’infrastructure de l’entreprise : parefeu et proxy ?

Pas de pare-feu mais un proxy ISA Server 2004 SP2. Afin de tester si le proxy peut poser problème, nous créons des règles côté client pour forcer ce dernier à ne pas passer par le proxy pour les adresses de l’en-tête mais rien ne change Triste Gloups, ça sent le sapin pour la production …

Nous revenons donc à l’origine du problème : certains fichiers ne se chargent pas ! Pour descendre un peu plus profond dans notre diagnostique, nous prenons un proxy HTTP bien connu des développeurs Web/AJAX : Fiddler. Immédiatement la source du problème est identifié :

Bug AJAX SharePoint

Nous avons un code HTTP de retour 502 : erreur de proxy. Quelques secondes suffisent pour rechercher une quelconque référence connue de ce problème, premier lien : bug erreur HTTP 502 connu et résolu avec le SP3 de ISA Server 2004. Le SP3 est installé, le problème est résolu !

Pour résumer, SharePoint 2010 + Host Header/alias DNS + ISA Server 2004 SP2 => passage du SP3 d’ISA Server 2004.

Sur ce, je peux rejoindre la communauté des MVPs à Seattle en toute tranquillité ! Bon vol pour ceux qui seront de la partie et à très bientôt pour les autres.

Association des propriétés entre SharePoint 2007/2010 et les documents Word (au format Open XML)

Je vous avais déjà présenté les capacités du nouveau format Open XML et notamment son extensibilité dans un précédent post. Voici un post juste pour attirer votre attention sur les capacités d’association des propriétés entre SharePoint et les documents OpenXML (=> les documents au format binaire .doc ne fonctionneront pas. Une feature de base de l’intégration Office/SharePoint, qui ne semble malheureusement pas si connue que ça Triste

Imaginons que vous soyez dans une bibliothèque de documents comportant une vue et un certain nombre de propriétés :

image

Ouvrez un document existant avec Office 2007 ou 2010 ou créez en un nouveau (dans ce cas mieux vaut avoir créer un type de contenu avec ces colonnes) puis naviguez dans le menu Insertion > QuickPart > Propriétés du document :

image

Choisissez une propriété à insérer et créer votre document autour :

image

En faisant apparaitre la barre de propriétés serveur, vous constaterez que toute modification apportées aux propriétés ou à la valeur du champs de propriétés inséré dans le document sont synchronisées dans les deux sens : toute modification dans le document met à jour la propriété associée et toute modification de propriété dans SharePoint mettra à jour la valeur dans votre document.

Cette association est importante pour la gestion analytique des documents qui deviennent, au delà d’un support de lecture/impression, une source de données et d’informations potentielles que les vues sauront exploiter à merveille avec des combinaisons de vue groupement/totaux(somme, moyenne, etc)/filtre :

image

Cas des documents en dehors du contexte SharePoint

Si le document est sortie de son environnement SharePoint, les propriétés et les associations resteront valides, néanmoins les propriétés de type personne ne seront plus disponibles. Il suffira de replacer le document dans la bilbiothèque pour restaurer le mapping des propriétés.

Conclusion

Les capacités d’Open XML associé à SharePoint 2010 et Office permettent d’associer les propriétés serveur – aka SharePoint - d’un document avec son contenu. De quoi créer des modèles de document afin de pré-remplir certains documents uniquement à l’aide des propriétés et des valeurs par défaut, éviter une double saisie de la valeur aux utilisateurs (dans le document puis dans les propriétés) ou encore de ne pas avoir à contrôler les écarts de saisie entre le document et les propriétés.

Enjoy !

Julien

Offrir une expérience sans compromis de vos applications Silverlight dans SharePoint 2010 en quelques lignes

L’intégration forte de SharePoint 2010 avec Silverlight permet d’offrir une expérience unique à vos utilisateurs (et ils vont aimer ça !). Vous le savez déjà me direz vous, et pour cela il suffit même juste de prendre le fichier .xap de l’application, et d’ajouter une webpart Silverlight pour intégrer une application dans SharePoint 2010.

“C’est pas faux”, mais qu’en est-il si l’utilisateur n’a pas Silverlight et que pour garantir le contenu de votre page, vous souhaitez soustraire l’emplacement ‘vide’/non fonctionnel par une image au lieu d’une bannière de demande d’installation ? Comment spécifier des paramètres variables (server side) ? Comment personnaliser le processus d’installation en toute simplicité ? Compliqué avec la webpart Silverlight (bien que l’on puisse la personnaliser quand même jusqu’à un certain point). Je vous présente (ou fait redécouvrir) un script qui vous simplifiera la vie pour réaliser ces tâches : Silverlight.js disponible sur MSDN Code.

Une fois le script Silverlight.js intégré dans vos webparts ou autre support (gabarit de page, master page, controle, etc), il ne suffit plus que de saisir les quelques lignes de codes suivantes pour afficher votre application et prévoir une option de secours si vos utilisateurs n’ont pas Silverlight d’installer :

<div id="silverlightControlHost">
    <script type="text/javascript">
        // Contenu alternatif (installation) si pas de Silverlight en vue
var getSilverlightMethodCall = "javascript:Silverlight.getSilverlight(\"4.0.50401.0\");" var installImageUrl = "http://go.microsoft.com/fwlink/?LinkId=161376"; var imageAltText = "Obtenir Microsoft Silverlight"; var altHtml = "<a href='{1}' style='text-decoration: none;'>" + "<img src='{2}' alt='{3}' " + "style='border-style: none'/></a>"; altHtml = altHtml.replace('{1}', getSilverlightMethodCall); altHtml = altHtml.replace('{2}', installImageUrl); altHtml = altHtml.replace('{3}', imageAltText); Silverlight.createObject( "ClientBin/MonAPplicationSilverlight.xap", silverlightControlHost, "slPlugin", { width: "100%", height: "100%", background: "white", alt: altHtml, version: "4.0.50401.0" }, { onError: onSLError, onLoad: onSLLoad }, "param1=value1,param2=value2", "row3"); </script> </div>

Pour Firefox, il faut un petit hack pour que cela fonctionne :

Silverlight.createObject( "ClientBin/SilverlightApplication1.xap", $get("silverlightControlHost"), "slPlugin", {

La génération de cette sortie HTML/javascript (depuis une contrôle ou une webpart par exemple) permettra aisément de spécifier les valeurs des paramètres en fonction du contexte d’utilisation et de l’emplacement du site dans votre collection de sites.

Update : pour vous simplifier encore plus la tâche, vous pouvez utiliser le modèle ‘Silverlight Web Part’ de projet Visual Studio 2010 disponible dans la galerie en ligne des extensions.

N’oubliez pas de rendre vos applications Silverlight accessible, pour rappel c’est possible depuis Silverlight 2 !

Lien vers la documentation MSDN :http://msdn.microsoft.com/en-us/library/cc265155(vs.95).aspx

Merci à l’équipe pour son travail qui m’a fait gagner une demi journée de labeur Sourire

SharePoint 2010 : Le come back de l’annuaire de sites, en mieux !

Ceux qui avait utilisé l’annuaire de sites dans MOSS ont certainement être surpris de ne pas le retrouver ou pas complètement dans SPS 2010. Un peu déçu de cette regression, je me suis mis à la recherche d’une solution palliative, et j’ai trouvé une solution que je souhaitais partager avec vous : SPSiteDirectory2010 ! Disponible sur Codeplex, ce projet permet d’aller même un peu plus loin que son ancêtre. On remerciera au passage MCS UK pour cette belle initiative.

Cette solution se présente sous la forme d’une liste – stockant toutes les informations des sites et des informations supplémentaires intéressantes ( taille, quotas, etc) –, d’une webpart d’affichage et de deux timers job qui liste les sites et vérifient si les sites existent toujours après un certain temps.

L’installation et la configuration de la solution sont documentées dans un guide disponible à part.

image

Avec vos talents de codeurs, vous pourrez aussi modifier les affichages des données et compléter les informations manquantes afin de faire de cette annuaire de sites une source d’informations pour nos administrateurs IT préférés (hein Christian !)

Créer un Cmdlet personnalisé pour SharePoint 2010

L’administration de SharePoint n’a jamais été aussi aisée et productive que depuis l’apparition des centaines de cmdlets pour PowerShell. Les amateurs de stsadm et des scripts en mode DOS ne pourront que confirmer cela (enfin j’espère !?). Vous ne vous trouver pas encore assez performant dans l’administration de votre ferme, même avec PowerShell ? Vous ne trouver pas la commande qui vous ferait être encore plus productif ? Votre produit de gestion de sauvegarde de ferme préféré n’a pas cmdlet et vous ne pouvez pas vous en passer ?! C’est par ici …

La première question à se poser est : quand créer des cmdlets ? Une cmdlet permet à un administrateur de la ferme de gérer et d’administrer la ou les fermes SharePoint rapidement depuis une console PowerShell (potentiellement distante). Si vous avez des tâches spécifiques, que vous exécutez par lot et cela de façon fréquente, vous avez un contexte propice à cette création. Sinon ne perdez pas votre temps à créer des cmdlets qui finiront au placard rapidement, essayez plutôt de poussez les possibilités de PowerShell et de passer par des fonctions pour vous en sortir. D’autant que le travail de développement n’est pas à la portée de n’importe quelle personne d’IT.

Il y a bien d’autres situations avec SharePoint 2010 nécessitant la création de nouveaux cmdlets : nouvelles capacités de gestion (site, liste, autorisations, etc), création d’un nouveau service, interopérabilité avec des outils tierces (exemple Backup Exec, etc), etc.

Les bases

Avec SharePoint, vous avez plusieurs choix lors de la conception de votre cmdlet puisque la plateforme propose plusieurs classes déjà spécialisées en fonction de votre intention :

Pour vous aiguiller, l’un des critères à prendre en compte est l’utilisation de la persistance entre vos cmdlets : est-ce que la cmdlet retourne un objet qui sera stocké dans une variable ? Si c’est le cas, utilisez les classes dérivées de SPCmdletBase, soit :

  • SPGetCmdletBase
  • SPNewCmdletBase
  • SPRemoveCmdletBase
  • SPSetCmdletBase

Si votre cmdlet ne retourne pas d’objet spécifique, mais n’effectue que des actions (par exemple : mise à jour d’autorisations, affichage d’un état en sortie texte non structuré, etc), l’utilisation de la classe SPCmdlet sera plus indiqué.

Si vous souhaitez utiliser le système de pipeline de PowerShell pour enchainer votre commande, la classe tout indiquée à cela sera SPCmdletPipeBind. Nous allons d’ailleurs y avoir recours dans notre exemple.

Dans cette partie, nous allons créer un exemple simple, une cmdlet permettant de lister le contenu d’une liste. Nous avons fait le choix d’utiliser la classe de base SPGetCmdletBase qui sera utilisé conjointement avec SPCmdletPipeBind pour récupérer le paramètre de l’adresse de la liste :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Management.Automation;
using Microsoft.SharePoint.PowerShell;
using Microsoft.SharePoint;

namespace Demo.SharePoint.PowerShell
{
    [
Cmdlet(VerbsCommon.Get, "SPList", SupportsShouldProcess = false), SPCmdlet(RequireLocalFarmExist = true)]
   
public sealed class GetSPListCmdlet : SPGetCmdletBase<SPList>
    {
        [
Parameter(Mandatory = true, ValueFromPipeline = true, Position = 0)]
       
public SPListPipeBind PipeBind { get; set; }

        [
Parameter(ValueFromPipeline = false)]
       
public string QueryFields { get; set; }

        [
Parameter(ValueFromPipeline = false, ValueFromRemainingArguments = false)]
       
public SwitchParameter ShowFields { get; set; }

       
protected override IEnumerable<SPList> RetrieveDataObjects()
        {
           
List<SPList> splists = new List<SPList>();

           
SPList list = PipeBind.Read();
           
if (list != null)
            {
                AssignmentCollection.Add(list.ParentWeb);
                AssignmentCollection.Add(list.ParentWeb.Site);
                splists.Add(list);
            }

           
// Paramètre champ
           
if (ShowFields)
            {
               
foreach (SPField field in list.Items.Fields)
                   
Console.WriteLine(field.Title + " - " + field.InternalName);
               
return null;
            }
           
else if (!String.IsNullOrEmpty(QueryFields)) // Export en CSV
            {
               
StringBuilder sb = new StringBuilder();
               
// Colonnes
               
Console.WriteLine(QueryFields);
               
// Valeurs
               
SPListItemCollection collListItems = list.GetItems(QueryFields.Split(';'));
               
foreach (SPListItem listItem in collListItems)
                {
                   
foreach (string field in QueryFields.Split(';'))
                        sb.Append(listItem[field].ToString()).Append(
";");
                   
Console.WriteLine(sb.ToString());
                    sb =
new StringBuilder();
                }
               
return null;
            }
           
else
               
return splists;
        }
    }

   
public sealed class SPListPipeBind : SPCmdletPipeBind<SPList>
    {
       
public string ListURI { get; private set; }

       
public SPListPipeBind(SPList spList) : base(spList) { }

       
public SPListPipeBind(string listURI) { this.ListURI = listURI; }

       
protected override void Discover(SPList instance)
        {
           
this.ListURI = instance.ParentWeb.Site.MakeFullUrl(instance.RootFolder.ServerRelativeUrl);
        }

       
public override SPList Read()
        {
           
SPSite site = new SPSite(this.ListURI);
           
SPWeb web = site.OpenWeb();
           
return web.GetList(this.ListURI);
        }
    }
}

Le déploiement

Concernant le déploiement, rien de sorcier avec les extensions SharePoint de Visual Studio 2010 :

  1. Créez un nouveau projet vide (sélectionner CSharp > SharePoint > 2010 puis entrez le nom de votre projet)
  2. Créez une solution en tant que Solution se déployant dans la ferme.
  3. Ajoutez les références vers Microsoft.SharePoint.PowerShell  et System.Management.Automation (dans le répertoire “c:\windows\assembly\GAC_MSIL\<nom de l’assembly>”)
  4. Supprimez la classe déjà créé par le projet et créez en une nouvelle avec le nom de votre classe, ici GetSPListCmdlet.
  5. Copiez le code ci-dessus dans le nouveau fichier de classe,
  6. Pour déployer la cmdlet automatiquement avec la console de gestion PowerShell SharePoint, nous allons créer un fichier XML nommé ‘Demo.SharePoint.powerShell.xml’ (<nom de l’assembly>.xml)
  7. Copiez le contenu du fichier XML (cf plus bas)
  8. Mapper le répertoire (<14 hive>/CONFIG/PowerShell/Registration) dans votre projet (clic droit sur le projet > Add > SharePoint mapped folder) et placez y le fichier XML précédemment créé.
<?xml version="1.0" encoding="utf-8" ?>
<ps:Config xmlns:ps="urn:Microsoft.SharePoint.PowerShell"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="urn:Microsoft.SharePoint.PowerShell SPCmdletSchema.xsd" >
  <ps:Assembly Name="$SharePoint.Project.AssemblyFullName$">
    <ps:Cmdlet>
      <ps:VerbName>Get-SPList</ps:VerbName>
      <ps:ClassName>Demo.SharePoint.PowerShell.GetSPListCmdlet</ps:ClassName>
      <ps:HelpFile>Demo.SharePoint.PowerShell.dll-help.xml</ps:HelpFile>
    </ps:Cmdlet>
  </ps:Assembly>
</ps:Config>

Remarque : pour créer le fichier d’aide, utilisez les liens suivants pour comprendre la structure du fichier XML à créer http://msdn.microsoft.com/en-us/library/aa965353%28VS.85%29.aspx et http://blogs.msdn.com/b/powershell/archive/2006/09/14/draft-creating-cmdlet-help.aspx. Le projet joint contient le fichier d’aide associé à notre exemple.

L’exécution

Une fois le projet créé et compilé, déployez le projet (clic droit sur le projet > Deploy) et lancez une commande PowerShell (il vous faudra ouvrir une nouvelle console après chaque déploiement) et testez les commandes suivantes :

> $list = Get-SPList http://<chemin vers votre liste>
> $list.ShowUser = $false
> $list.Update()

=> Récupération de l’objet SPList de la liste spécifiée et modification de la propriété ShowUser

> Get-SPList http://<chemin vers votre liste> –ShowFields

=> Affiche toutes les propriétés (nom et nom interne) de la liste

> Get-SPList http://<chemin vers votre liste> -QueryFields "Title;Author"

=> Affiche le contenu des propriétés spécifiées pour tous les éléments de la liste

Les sources sont disponibles ici.

A bientôt et meilleurs voeux pour cette nouvelle année

Plus de Messages Page suivante »


Les 10 derniers blogs postés

- MBA : Pourquoi faire et comment le choisir ? par Blog Technique de Romelard Fabrice le il y a 15 heures et 14 minutes

- Y'a des erreurs qui peuvent rendre le développeur violent par Aleks's Blog le 02-02-2012, 16:33

- [Hyper-V 3] Présentation des commandlets PowerShell par Blog de SPBrouillet (Pierrick BROUILLET) le 01-31-2012, 16:01

- IIS7 – Compression GZIP par Atteint de JavaScriptite Aiguë [Cyril Durand] le 01-31-2012, 15:52

- SharePoint 15 Technical Preview Managed Object Model Software Development Kit par Matthew le 01-31-2012, 12:34

- Office 15 Technical Preview - Open specification Update par Matthew le 01-31-2012, 10:14

- TFS Integration Tools – Installation par Vivien Fabing le 01-31-2012, 00:06

- Test par RonnyK le 01-30-2012, 16:56

- [SharePoint 2010] Désactiver le correcteur orthographique dans les pages d’un site de publication par Jean-Christophe Brabant le 01-30-2012, 09:30

- [SharePoint 2010] Site internet et performances : poids et nombre des ressources par Arnault Nouvel le 01-30-2012, 00:52