Livre sur SharePoint 2013 en français

Version électronique du livre SharePoint 2013: Travaux Pratiques pour Concepteurs.

L’édition papier, tout en couleur, vient de paraître !

Le contenu de ce livre est un recueil de travaux pratiques destinés à des personnes ayant en charge la gestion de sites Intranet hébergés sur Microsoft SharePoint 2013.

En particulier, ce livre d’exercices couvre l’organisation des contenus et leur mise à disposition pour les utilisateurs finaux. Il s’adresse donc à une population d’usagers communément appelés concepteurs.

Ces Travaux Pratiques pour Concepteurs traitent des possibilités de personnalisation offertes par le navigateur.

Bien qu’il soit simple d’usage, il permet des manipulations souvent insoupçonnées, même par certains utilisateurs chevronnés de SharePoint.

Les travaux pratiques de ce document ont été peaufinés par la pratique de plusieurs centaines de stagiaires en formation.

Conçus dans un réel souci pédagogique, ils commencent par des manipulations de base (création de sites, création de listes etc.). Progressivement, vous apprendrez des usages plus complexes comme par exemple, la connexion de composants WebPart.

SharePoint 2013 : Travaux Pratiques pour Concepteurs

SharePoint: Le suivi de l’historique des versions

Le suivi des versions (ou contrôle de versions ou versionning en mauvais franglais) d’une liste ou d’une bibliothèque dans SharePoint peut être à la source de nombreux contresens. Le suivi des versions permet d’avoir plusieurs versions d’un même document. Les

Lors de la création d’une liste ou d’une bibliothèque avec l’interface graphique du navigateur Web, le suivi des versions n’est généralement pas activé par défaut. C’est vrai aussi lors de la création d’une liste ou d’une bibliothèque avec SharePoint Designer.

Il existe toutefois des exceptions. Les bibliothèques de connexions de données, de pages wiki et de rapports ont le suivi des versions activé par défaut mais il est possible de le désactiver.

De même, le suivi des versions est activé par défaut pour les listes de suivi de problèmes, les listes Mémo des appels téléphoniques et Circulations. Ces deux derniers types de liste sont accessibles lorsque la fonctionnalité de site Listes Travail de groupe est activée.

Il y a des différences dans le suivi des versions entre une liste et une bibliothèque.

Suivi des versions d’une bibliothèque

Si le suivi des versions n’est pas actif pour votre bibliothèque, vous pouvez l’activer en allant sur les paramètres de la bibliothèque (Ruban Bibliothèque) puis vous cliquez sur Paramètres de contrôle de version.

Dans la section Document – Historique des versions:

Paramètres de l'historique des versions

Versions principales

Si vous sélectionnez uniquement l’option Créer des versions principales, l’ajout d’un nouveau document, ou sa création,lui donne la version 1.0. Ensuite, à chaque fois que vous modifierez et enregistrerez les propriétés du document, la version va s’incrémenter de 1 : 2.0, 3.0, 4.0 etc.

L’incrémentation dépend aussi de l’intégration des outils clients utilisés (par exemple suite Office, notepad, autre) et donc du type de documents. Par exemple, le numéro de version d’un fichier texte sera incrémenté à chaque enregistrement du document.

Historique des versions d'un fichier texte

Les fichiers d’images fonctionnement comme les fichiers de type texte.

S’il s’agit d’un document Office (Word par exemple), modifié avec le client Office correspondant (Microsoft Word), le numéro de version sera incrémenté uniquement à sa fermeture. les enregistrements successifs n’incrémenteront pas le numéro de version. Par exemple, les fichiers ci-dessous ont été chargés une première fois puis modifiés et enregistrés 4 fois de suite. L’application cliente a été fermée.

Historique des versions d'un fichier Office

Nombre de versions principales à conserver

Dans les paramètres de la bibliothèque, vous pouvez aussi indiquer le nombre maximal de versions principales à conserver. C’est souvent une source de confusion.

En effet, si vous indiquez le chiffre 4, vous pourrez quand même avoir des versions 5.0, 6.0, 7.0 etc. En revanche, vous ne pourrez jamais avoir un historique de plus de 4 versions simultanément. Autrement dit, quand le document atteindra la version 7.0, SharePoint aura gardé la version principale courante (7.0) et les 4 dernières (6.0, 5.0, 4.0, 3.0). Il aura supprimé les plus anciennes versions: 1.0 et 2.0. Lorsque le document passera à la version 8.0, la version la plus ancienne (3.0) sera supprimée et il restera les versions: 8.0 (courante), 7.0, 6.0, 5.0 et 4.0. Et ainsi de suite.

Lorsque vous limitez le nombre de versions principales à conserver en indiquant un chiffre, SharePoint n’opère pas immédiatement pour réduire le nombre de versions. Il supprime les versions supplémentaires (si elles existent) uniquement lorsque vous serez amené à créer une nouvelle version. Ce comportement s’explique pour des raisons de performances car cela lui évite de parcourir une bibliothèque qui comporte parfois des milliers de fichiers pour détecter uniquement ceux qui sont en trop.

Toutefois si votre principale préoccupation est le gain de place disque, la solution est d’utiliser un script PowerShell qui supprime l’historique de version des bibliothèques SharePoint, en indiquant une valeur maximale. Attention, testez sérieusement ce script.

Restaurer une version

Grâce à l’historique des versions, vous pouvez restaurer une version précédente. C’est aussi parfois une source de confusion.

Restaurer une version

La confusion vient du fait, que comme la version 7.0 est restaurée, nous imaginons, instinctivement,  que la prochaine version devrait être la 7.0. Cela donnerait une numérotation : 10.0 puis 11.0 puis 7.0 etc. S’il est possible d’avoir des ruptures dans la numérotation (cf. plus bas), il n’est pas possible d’avoir une numérotation qui ne va pas en croissant.

Il vaut mieux imaginer l’acte de restauration comme la copie intégrale du contenu de la version 7.0 et son collage dans la version 11.0 pour venir remplacer tout le contenu existant. Autrement dit, vous créez une version 12.0 dont le contenu provient de la 7.0. Vous pouvez l’indiquer dans les commentaires afin de mieux suivre l’historique du document.

Versions principales et secondaires

Si, dans les paramètres, vous sélectionnez uniquement l’option Créer des versions principales et secondaires (brouillons), non seulement la case Conserver des brouillons pour le nombre suivant de versions principales se libère mais de plus la section Sécurité des éléments de brouillon se libère aussi, au moins partiellement.

Sécurité des éléments de brouillonLa section Sécurité des éléments de brouillon permet de mieux comprendre l’intérêt des versions secondaires. En particulier, si vous sélectionnez l’option Uniquement les utilisateurs pouvant modifier des éléments.

Pour mieux comprendre, supposez qu’Alice a le droite de créer ou modifier des documents dans cette bibliothèque et Bob a uniquement le droit de lire les documents sans pouvoir les modifier. Si l’option Uniquement les utilisateurs pouvant modifier des éléments est cochée, Bob ne pourra voir que les versions principales. Il ne verra pas les versions secondaires.

Dans l’exemple ci-dessous, Alice a créé le 10/6 un nouveau document dans une bibliothèque où les versions principales et secondaires avaient été préalablement activées. La première version est donc la version 0.1. Le 13/6, elle modifie et enregistre le même document qui passe en version 0.2. Elle le modifie encore le 14/6, il passe en version 0.3.

Le 17/6, Alice décide de passer son document en version principale car elle considère qu’il est terminé ou parce qu’il a été validé. Le passage en version principale s’appelle une publication. Étymologiquement, publier signifie « rendre public ». Le document passe donc en version 1.0. Finalement, Alice modifie encore son document le 20/6, le document se retrouve en version secondaire 1.1. Puis le 21 juin, elle publie une nouvelle version principale, c’est la version 2.0. Enfin, le 23/6 Alice procède à une ultime modification qu’elle ne publiera jamais: le document est en version 2.1.

Date​s ​ALICE
(droit de modifier)
​BOB
(droit de lecture)
​10/06 ​0.1 /​
​13/06 ​0.2 ​/
​14/06 ​0.3 ​/
​17/06 ​1.0 ​1.0
​20/06 ​1.1 ​1.0
​21/06 ​2.0 ​2.0
​23/06 ​2.1 ​2.0

Lorsque Bob se connecte à la bibliothèque, le 10 juin, il ne voie pas le document car l’option Uniquement les utilisateurs pouvant modifier des éléments (ULUPMDE) a été activée. C’est la même situation le 13 et 14 juin.

Ce n’est qu’à partir du 17 juin que Bob peut lire pour la première fois le document qui est en version principale 1.0. C’est d’ailleurs la seule version qu’il verra aussi le 20/6, bien qu’il existe une version secondaire. En effet, cette version secondaire lui est inaccessible à cause de l’option ULUPMDE activée.

Le 22 juin, Bob peut voir la version 2.0 et c’est la dernière version qu’il pourra lire en l’état car Alice ne fera plus de publication.

Limiter le nombre de versions secondaires à conserver

Ce paramètre est probablement le moins évident à comprendre dans le suivi de l’historique des versions. En effet, une lecture rapide pourrait vous faire croire qu’il est l’équivalent du nombre de versions principales à conserver.

Limiter le nombre de versions secondaires à conserver

Ce n’est pas le cas.

Il indique le nombre de versions principales qui auront des versions secondaires. Il ne limite pas le nombre de versions secondaires qui peut être illimité, si la place disque le permet.

Si, par exemple, vous avez saisi 7 pour le nombre maximal de versions principales et 2 pour le nombre de brouillons.

Limiter le nombre de versions principales à conserver

Cela signifie que SharePoint gardera un nombre illimité de versions secondaires pour les 2 dernières versions principales (6.0 et 7.0 mais aussi 18.0 et 19.0). Les versions secondaires (ou brouillons) des versions principales inférieures seront supprimées (1.0 à 5.0 ou 12.0 à 17.0). Rappelez-vous qu’il faut ajouter la version courant au nombre maximal de versions principales pour obtenir le nombre total maximum de versions d’un document.

Les suppressions réalisées par SharePoint ne vont pas dans la corbeille de site. Une sauvegarde réalisée par un opérateur de sauvegarde permet de restaurer.

Supprimer manuellement des versions

Lors de la consultation de l’historique des versions, SharePoint affiche la possibilité de supprimer des versions principales et secondaires antérieures.

Supprimer manuellement des versions

Si vous cliquez sur Supprimer les versions secondaires, toutes les versions secondaires seront supprimées sauf la dernière version secondaire (si elle existe).

Si vous cliquez sur Supprimer toutes les versions, toutes les versions principales et secondaires seront supprimées sauf la dernière version principale et la dernière version secondaire.

Les versions supprimées principales ou secondaires sont envoyées dans la corbeille du site. Il est donc facile de les restaurer en cas d’erreur.

Restaurer des versions

A la suite d’une suppression manuelle d’une version, la corbeille récupère les versions sous forme de fichiers élémentaires. Il est donc possible de restaurer un fichier dans une version précise sans avoir à tout restaurer. Cela explique pourquoi,  il y a parfois des ruptures dans la numérotation des versions.

Les ruptures dans la numérotation peuvent aussi venir de suppressions manuelles der versions faites à des époques différentes.

Rupture de numérotation des versions

Mécanisme d’approbation

Le mécanisme d’approbation des documents permet de mieux contrôler le risque documentaire. En effet, ce mécanisme permet de s’assurer que le document ne sera visible qu’une fois qu’il sera approuvé.

Lorsque vous cochez à oui l’option Demander une approbation du contenu pour les éléments soumis, la section Sécurité des éléments de brouillon se libère et l’option Uniquement les utilisateurs pouvant approuver des éléments (et l’auteur de l’élément) est activée par défaut.

Approbation de contenu

Comme vous pouvez le constater le mécanisme d’approbation est indépendant de l’historique des versions.

Lors de l’ajout d’un document, si l’approbation de contenu a été activée, la colonne État d’approbation s’affiche.

Approbation de contenu

Le fichier Word a été rajouté après que l’option de contenu ait été activée. Son état d’approbation est en cours.

Si l’option Uniquement les utilisateurs pouvant approuver des éléments (et l’auteur de l’élément) est toujours activée alors un utilisateur qui ne dispose que des droits de lecture et modification ne voit pas le fichier. Pour qu’ils puissent voir le fichier, sans modifier leurs droits, il faut que le fichier soit approuvé par un approbateur.

L’approbation est faite par sélection du document puis clic sur Approuver/refuser dans le ruban, par exemple.

L’état d’approbation peut être annulé: le document peut être par la suite rejeté ou suspendu. Toutefois, ce n’est que dans l’état Approuvé qu’il sera visible de tous les utilisateurs autorisés à le lire.

Si des documents sont présents dans la bibliothèque et que l’approbation du contenu est activé ensuite, les documents présents bénéficient automatiquement du statut Approuvé. les utilisateurs autorisés auront donc accès à ces documents.

Suivi des versions d’une liste

Le suivi de versions d’une liste n’est pas exactement similaire à celui d’une bibliothèque car la notion de versions secondaires a été remplacée par la notion d’approbation.

Office Open XML

Microsoft Office 2007, Office 2010 et Office 2013 utilisent le format de fichiers Office Open XML. Ce format de fichiers ouvert est devenu un standard ISO en avril 2008.

Un objectif de l’initiative Open XML a été d’intégrer dans le nouveau format les caractéristiques des milliards de documents qui existent déjà. Afin d’aider les utilisateurs dans cette tâche, Microsoft a développé un ensemble d’outils généralement méconnus pour certains d’entre eux.

Le Gestionnaire de planification de migration d’Office (OMPM) est un ensemble d’outils qui vous permet de préparer un environnement pour une migration vers Microsoft Office 2010. Il contient un ensemble d’outils pour aider les organisations à analyser leurs documents et identifier les questions soulevées par une migration.

Après avoir scanné vos documents, vous pouvez importer les résultats dans une base de données Access puis visualiser le rapport. Pour chaque document, le rapport vous indique si l’outil a détecté des problèmes de conversion: chaque problème rencontré fait l’objet d’une proposition de solution

Eventuellement, vous pouvez utiliser Office File Converter (ofc.exe) pour convertir les documents dotés de l’ancien format binaire dans le nouveau format XML.

Créer dans Outlook des listes de distributi​on en fonction des catégories

Un collègue de travail m’a proposé une macro qu’il a écrit en VBA.

Dans Outlook, vous pouvez créer librement des catégories afin d’organiser ou classer vos contacts. Le souci rencontré est que rien n’est prévu dans Outlook pour exploiter cette information. Au contraire de logiciels comme Androïd qui vous permettent de sélectionner tous les contacts d’un groupe pour leur envoyer un email ou un sms.

La VBA développé par Jean-François permet justement de convertir automatiquement les catégories des contacts Outlook en listes des diffusion, pour tous les carnets d’adresses.

Comme j’ai trouvé son p’tit programme ingénieux, il a accepté de le partager avec vous sur mon blog.

CreerGroupesAvecCategories_V1_0_0.zip

Windows: Infrastructure de classification des fichiers (FCI)

Windows Server 2008 R2 dispose nativement d’un ensemble de fonctionnalités regroupées sous l’intitulé Infrastructure de classification des fichiers ensemble de fonctionnalités (File Classification Infrastructure / FCI).

File Classification Infrastructure / FCI

FCI fournit des outils intégrés pour aider les administrateurs à gérer plus efficacement les fichiers, en réduisant les coûts, et pour atténuer le risque documentaire.

Ce produit permet de définir des propriétés de classification, de classer automatiquement les fichiers selon leur contenu ou leur emplacement et de gérer leur expiration. La classification est faite selon la planification définie.

Définition d'une propriété dans FCI (File Classification Infrastructure)
Le type de la propriété (ici: Multiple Choix List) défini le format de la donnée.

Les paramètres de classification peuvent utiliser des expressions régulières.

Par exemple, une politique d’expiration de contenu peut être définie en tenant compte de la date de dernière modification, d’une durée de conservation et des propriétés du fichier. Si les fichiers correspondent à ces critères, ils seront automatiquement déplacés sur un autre emplacement.

Une autre facette intéressante de FCI est sa capacité à produire des rapports périodiques ou à la demande sur la volumétrie ou l’utilisation des fichiers.

Si vous connaissez déjà SharePoint, vous remarquerez une très grande similarité avec la mise en oeuvre des stratégies de gestion des informations et les rapports du plan de gestion de fichiers, qui permettent d’afficher un rapport sur le contenu et les stratégies d’une liste ou une bibliothèque.

Synergie FCI et SharePoint

Cette similitude permet de créer une synergie entre FCI et SharePoint.

En effet, SharePoint n’a pas vocation à stocker tous les fichiers. Certains fichiers métiers doivent rester sur un serveur de fichiers pour des raisons de performances ou de facilité de gestion. En termes de gestion documentaire, la valeur de SharePoint réside plus dans le classement et la recherche des documents. Cela est facilité par l’utilisation des métadonnées et des types de contenu. Dans SharePoint 2010 et 2013, cette valeur a été amplifiée grâce au service de Métadonnées gérées, aux Ensembles de documents et à bien d’autres fonctionnalités de GED.

FCI peut aider au classement des documents dans SharePoint. Par exemple, il peut servir à alimenter les propriétés des documents Office avant qu’ils ne soient enregistrés dans SharePoint. En utilisant l’une des méthodes de classification disponibles (par contenu, par dossier, etc.), un certain nombre de fichiers pourraient avoir leurs métadonnées alimentées.

Comme les métadonnées des documents Office sont stockées avec le contenu du document, lorsqu’il est enregistré dans SharePoint, les métadonnées associées aux documents Office sont aussi stockées dans SharePoint. Elles sont donc immédiatement disponibles pour être affichées dans une colonne de l’affichage de la bibliothèque ou pour être indexées par le service de recherche de SharePoint.

Un prochain article expliquera comment le processus de transfert des fichiers d’un serveur de fichiers vers SharePoint peut être grandement automatisé grâce à l’Infrastructure de classification des fichiers (FCI) et PowerShell.

SharePoint: Organisateur de contenu

Lors de la mise en oeuvre SharePoint, les organisations veulent savoir comment « reprendre » le contenu présent sur les disques réseaux (ou les dossiers publics Exchange, ou les bases Domino NSF) pour les migrer vers SharePoint.

L’organisateur de contenu est une fonctionnalité de SharePoint 2010 et Sharepoint 2013. Cette fonctionnalité permet de déplacer des fichiers dans un dossier, une bibliothèque, ou un site de type centre de documents. Un site de type Centre de documents permet de centraliser le contenu d’une organisation afin de disposer d’un référentiel de documents. Les bibliothèques des centres de documents disposent par défaut des types de contenu Document et Lien vers un document.

L’organisateur de contenu vous permet de spécifier des règles de sorte que lorsque les fichiers entrent dans la bibliothèque de remise, les règles sont appliquées pour déplacer les fichiers à l’emplacement correct.

Un administrateur de site peut créer des règles basées sur des métadonnées pour définir comment un document sera déplacé dans une bibliothèque. Les règles sont définies dans les paramètres du site. Le site peut être un site quelconque à condition que la fonctionnalité Organisateur de contenu est activée.

L’activation de l’organisateur rajoute d’office une nouvelle bibliothèque, intitulée Bibliothèque de remise (nom interne: DropOffLibrary).

Dans les paramètres du site, de nouveaux menus apparaissent sous Administration du site:

Paramètres de l’organisateur de contenu

La menu Paramètres de l’organisateur de contenu permet de configurer l’organisateur de contenu du site.

Le paramètre Rediriger les utilisateurs vers la bibliothèque de remise, redirige vers les utilisateurs vers la bibliothèque de remise lorsqu’ils veulent télécharger des documents dans une bibliothèque du site, si celle-ci est concernée par une règle de l’organisateur de contenu. Autrement dit, si une bibliothèque est concernée par une règle de l’organisateur de contenu, l’utilisateur ne peut pas télécharger directement un dichier dans cette bibliothèque. Il sera automatiquement redirigé vers la bibliothèque de remise. Ce paramètre est activé par défaut.

Le paramètre Envoi vers un autre site permet de spécifier un autre site comme emplacement cible d’une règle. La fonctionnalité Organisateur de contenu doit être aussi active sur ce site. Cela peut être intéressant pour disposer d’un site unique pour gérer l’ensemble des règles, plutôt que d’avoir des règles sur chaque site concerné.

La paramètre Partitionnement de dossier permet de créer automatiquement des sous-dossiers dès qu’un nombre de fichiers déposés dans un emplacement cible dépasse un nombre donné. La valeur par défaut est de 2500 mais elle est modifiable. En revanche, l’intitulé du dossier est fixe (en dehors de la date et l’heure de création du dossier). A cause de cette limitation, son utilisation perd un peu de son intérêt.

Le paramètre Soumissions en double permet de contrôler comment doit se comporter SharePoint en cas d’ajout d’un fichier portant le même nom dans un emplacement cible. Si le contrôle de version de la bibliothèque cible est actif, vous pouvez demander à ce que SharePoint l’utilise. Si le cas se présente, Sharepoint créera une nouvelle version. Le résultat peut être assez hasardeux sauf s’il est possible de prédire avec certitude que les nouveaux fichiers qui viendront se déverser seront toujours plus récents que les fichiers déjà existants dans l’emplacement cible et qui possèdent le même nom. Généralement, je préfère activer l’autre option qui permet d’ajouter des caractères uniques à la fin des noms de fichiers en double.

Le paramètre Contexte de conservation permet de conserver les journaux d’audit associés aux documents et d’assurer une meilleure traçabilité en cas de contrôle.

Le paramètre Gestionnaires de règles indique qui sont les utilisateurs qui peuvent gèrer les règles et réagir lorsqu’un document ne correspond à aucune règle. Dans ce dernier cas, ils sont prévenus par email lorsque des soumissions ne correspondent à aucune règle ou lorsque la bibliothèque de remise n’est pas vide. Par défaut, le nombre de jours d’attente avant l’envoi d’un message électronique est de 3 mais il se modifie.

Le paramètre Points de soumission décrit les opérations supportées par le Web Service afin d’envoyer du contenu vers le site.

Règles de l’organisateur de contenu

Lors de l’ouverture des règles, SharePoint ouvre une bibliothèque intitulée Règles de l’organisateur de contenu (nom interne: RoutingRules). Si vous cliquez sur le lien Tout le contenu du site, vous ne verrez pas apparaître cette bibliothèque dans le navigateur web car son attribut masquer dans le navigateur est activé. En revanche, elle est visible si vous ouvrez le site avec SharePoint Designer.

Il ne faut pas confondre la bibliothèque Règles de l’organisateur de contenu qui stocke les règles avec la bibliothèque de remise qui stocke les documents sur lesquels les règles vont s’appliquer.

Les règles sont accessibles grâce au menu Actions du site > Paramètres du site > Règles de l’organisateur de contenu.

Si vous cliquez sur Ajouter un nouvel élément, vous pouvez créer une nouvelle règle.

Le paramètre Nom de la règle est important car il est conseillé d’indiquer dans le nom les conditions et les actions de la règle. Par exemple: Recherche et Développement si fichiers de type Recherche et Stochastique > 7.

Le paramètre État et priorité de la règle permet de fixer une priorité relative d’une règle par rapport aux autres règles. La priorité la plus forte est 1, tandis que la priorité la plus faible est 9. Par défaut, la valeur est sur la moyenne à 5. Si un envoi correspond à plusieurs règles, SharePoint appliquera celle dotée de la plus haute priorité. La priorité doit donc être planifiée soignuesement afin d’éviter des routages intempestifs. Ce paramètre permet aussi de désactiver la règle. Cela permet par exemple de la suspendre temporairement afin de vérifier le bon fonctionnement des autres règles ou inversement.

Dans le paramètre Type de contenu de l’envoi, il faut d’abord choisir un type de contenu, en filtrant d’abord sur le groupe qui le contient puis ensuite en le sélectionnant. Par exemple, j’ai créé un type de contenu intitulé SOCT_BPM. Dans l’hypothèse (défavorable !) où ce type de contenu aurait un autre nom sur un autre site, vous pouvez l’indiquer. Une fois que le type de contenu est choisi, le contenu du paramètre Conditions s’adapte automatiquement. Il est indispensable que les bibliothèques cibles gèrent le type de contenu sélectionné.

Le contenu des champs du paramètre Conditions dépend du type de contenu sélectionné au préalable. Les propriétés affichées dépendent donc du type de contenu. Une fois que la propriété est sélectionnée, il faut choisir le type d’opérateur: « est égal à », « n’est pas égal à », « est supérieur à », « est inférieur à », « est supérieur ou égal à », « est inférieur ou égal à », « commence par », « ne commence pas par », « se termine par », « ne se termine pas par », « contient tou(te)s les », « ne contient pas tou(te)s les », « est vide », « n’est pas vide ».

La liste des opérateurs dépend du type de la propriété. Pour une propriété de type nombre, la liste des opérateurs sera différente de celle d’une propriété de type choix.

Il reste à indiquer la valeur choisie pour définir la condition. La liste des opérateurs disponibles et la liste des valeurs dépendent directement du choix de la propriété.

Par exemple dans mon type de contenu SOCT_BPM, il existe une métadonnée nommée Comités, de type choix avec les valeurs: Recherche, Laboratoire, Marketing, Production et Administratif.

Il est possible d’ajouter plusieurs conditions. Il est aussi possible de supprimer toutes les conditions: la règle s’exécutera systématiquement. Dans ce cas, il faut veiller à la mettre en priorité faible, c-à-d un chiffre supérieur à 5 (cf. le paramètre État et priorité de la règle).

Le paramètre Emplacement cible indique où placer les fichiers concernés par cette règle. Si d’autres sites ont la fonctionnalité Organisateur de contenu activé, vous pouvez les sélectionner. Vous pouvez aussi obliger le regroupement des documents similaires.

Exemples de mise en oeuvre

Pour cet exemple, un site vide intitulé No man’s land a été créé et la fonctionnalité Organisateur de contenu est activée. Deux bibliothèques de documents ont été rajoutées: Recherche et Développement et Laboratoire.

Par ailleurs, il a été créé un type de contenu nommé SOCT_BPM avec 2 colonnes supplémentaires: Comités (type Choix) et Stochastique (Type Nombre). Ce type de contenue est associé à toutes les bibliothèques.

L’objectif est de déplacer les documents en respectant des règles précises:

Un document qui est estampillé Laboratoire (métadonnée Comités) doit être stocké dans la bibliothèque Laboratoire.
Un document qui est estampillé Recherche et qui a une valeur de stochastique > 5 et <= 7 doit être stocké aussi dans la bibliothèque Laboratoire. Un document qui est estampillé Recherche et qui a une valeur de stochastique > 7 doit être stocké aussi dans la bibliothèque Recherche et Développement.

Compte-tenu de la dépendance des 2 dernières règles, la dernière règle doit avoir une priorité plus élevée que l’autre. Soit, dans la pratique:

The Pragmatic Programmer: From Journeyman to Master (Andrew Hunt, etc)

The Pragmatic Programmer: From Journeyman to Master (Andrew Hunt, etc)

Gloups ! Au départ, j’avais prévu de faire un commentaire élogieux de ce super bouquin et puis j’ai zappé. Donc en quelques lignes…

Ce n’est pas un livre pour apprendre le développement informatique.

C’est un livre pour apprendre à bien développer en informatique.

Il est à lire impérativement par les développeurs avec moins de 25 ans de pratique.

Bien sûr, tous les autres développeurs connaissent les bonnes pratiques présentées mais, quand même, une bonne piqûre de rappel ne serait pas inutile pour eux non plus :-)

Lien avec affiliation:
The Pragmatic Programmer: From Journeyman to Master

Lien sans affiliation:
The Pragmatic Programmer From Journeyman to Master Amazon.fr Andrew Hunt, David Thomas

PowerShell: Commandes pour manipuler les formats de fichiers

Les formats de fichiers produits par les commandes PowerShell sont parfois déroutants.

Pourtant les exemples trouvés sur le web sont souvent simplistes car ils ne reflètent pas toujours la complexité de la réalité.

En effet, les « vrais » fichiers recèlent des pièges liés aux données elles-mêmes: présence de virgule ou de point-virgule dans les données au format CSV, etc.

Cet article est l’occasion de passer en revue les principales particularités des formats de fichier et les commandes associées.

Out-File

Pour obtenir la liste des services qui s’exécutent sur votre ordinateur dans un fichier texte, vous allez utiliser la commande Out-File.

Ouvrez une invite de commande PowerShell en tant qu’Administrateur et tapez:

Get-WmiObject win32_service | Out-File .services.txt

Ouvrez le fichier services.txt avec Notepad++:

ExitCode : 0
Name : AdobeARMservice
ProcessId : 1780
StartMode : Auto
State : Running
Status : OK

ExitCode : 0
Name : AdobeFlashPlayerUpdateSvc
ProcessId : 0
StartMode : Manual
State : Stopped
Status : OK

Dans ce cas, vous ne récupérez qu’une partie des informations d’un service, la disposition est sous forme de fiche et le fichier est encodé en UCS-2 Little Endian.

Encodage UTF-8

Pour avoir un encodage UTF-8, tapez:

Get-WmiObject win32_service | Out-File .services.txt -Encoding « UTF8″

Par défaut, Get-WmiObject win32_service produit un résultat sous forme de liste. Pour avoir une disposition tabulaire, vous essayez:

Get-WmiObject win32_service | Format-Table | Out-File .services.txt -Encoding « UTF8″

Le résultat:

ExitCode Name ProcessId StartMode State Status
——– —- ——— ——— —– ——
0 AdobeARMservice 1780 Auto Running OK
0 AdobeFlashPlayer… 0 Manual Stopped OK

Le « Name » est partiel. La mise en forme est peu pratique pour un traitement automatisé.

Commande Get-Service

Le résultat ne vous convenant toujours pas, vous changez de commande pour obtenir la liste des services. Au lieu d’utiliser Get-WmiObject win32_service, vous essayez la commande Get-Service qui par défaut produit un résultat sous forme de tableau:

Get-Service | Out-File .services.txt -Encoding « UTF8″

Le résultat est encore différent:

Status Name DisplayName
—— —- ———–
Running AdobeARMservice Adobe Acrobat Update Service
Stopped AdobeFlashPlaye… Adobe Flash Player Update Service

En fait, la colonne Name (ainsi que DisplayName) est tronquée.

Export-Csv

Au lieu d’utiliser Out-File, vous allez utiliser Export-Csv. Tapez la commande suivante:

Get-WmiObject win32_service | Export-Csv .services.csv -Encoding « UTF8″

Ouvrez le fichier services.csv avec Notepad++ et vous voyez apparaître beaucoup plus d’informations sous forme quasi-tabulaire:

#TYPE System.Management.ManagementObject#rootcimv2Win32_Service
« PSComputerName », »__GENUS », »__CLASS », »__SUPERCLASS », »__DYNASTY », »__RELPATH »,…
« MONORDINA », »2″, »Win32_Service », »Win32_BaseService », »CIM_ManagedSystemElement », »Win32_Service.Name= » »AdobeARMservice » » »,…
« MONORDINA », »2″, »Win32_Service », »Win32_BaseService », »CIM_ManagedSystemElement », »Win32_Service.Name= » »AdobeFlashPlayerUpdateSvc » » »,…

Pour éliminer la première ligne (« #TYPE System.Management.ManagementObject#rootcimv2Win32_Service »), il suffit de rajouter le paramètre -NoTypeInformation à la ligne de commande:

Get-WmiObject win32_service | Export-Csv .services.csv -Encoding « UTF8″ -NoTypeInformation

Ouvrez le fichier services.csv avec Microsoft Office Excel. Lors de son ouverture, Excel a détecté la présence du séparateur « ; » dans certaines lignes et il a séparé les données concernées dans la seconde colonne (« B »). Par exemple la description du « Service de cache de police Windows » contient un « ; »: « […] Il peut être désactivé ; il en résulte cependant une dégradation des performances des applications. »

Délimiteur spécifique

La présence inopportune du séparateur « ; » va rendre plus complexe le traitement des données lors de l’utilisation d’un Split(). Aussi, pour contourner ce problème, vous décidez de changer de délimiteur en choisissant un caractère plus rare comme ¤.

La commande devient:

Get-WmiObject win32_service | Export-Csv .services.csv -Delimiter « ¤ » -Encoding « UTF8″ -NoTypeInformation

Lorsque vous ouvrez le fichier services.csv avec Microsoft Office Excel, celui-ci n’arrive pas à séparer les colonnes automatiquement: l’assistant d’importation de texte se lance.

Assistant d'importation de texte d'Excel

Vous pouvez réduire le nombre de colonnes avec l’utilisation de la commande Select-Object. Par exemple, si vous ne voulez que le nom et la description (« Caption ») de chaque service, vous tapez la commande suivante:

Get-WmiObject win32_service | Select-Object Name, Caption | Export-Csv .services.csv -Delimiter « ¤ » -Encoding « UTF8″ -NoTypeInformation

Le fichier résultat est plus sobre:

« Name »¤ »Caption »
« AdobeARMservice »¤ »Adobe Acrobat Update Service »
« AdobeFlashPlayerUpdateSvc »¤ »Adobe Flash Player Update Service »

Import-Csv

Pour retraiter le fichier résultat, utilisez la commande PowerShell Import-CSV suivante:

Import-Csv .services.csv -Delimiter « ¤ »

Commande PowerShell Import-Csv

Pour traiter une seule colonne, vous utilisez la fonction Split() ou la variable automatique $_.

La commande suivante fournit la description de tous les services dont le nom débute avec la lettre « A »:

Import-Csv .services.csv -Delimiter « ¤ » | ForEach-Object {if($_.Name.StartsWith(« A »)){write-host $_.Caption}}

Si votre fichier services.csv ne possédait pas d’entête, la commande précédente échouerait. Pour y remédier, il suffit d’indiquer un entête dans la commande Import-Csv avec le paramètre Header:

Import-Csv .services.csv -Header (« Name », »Caption ») -Delimiter « ¤ » | ForEach-Object {if($_.Name.StartsWith(« A »)){write-host $_.Caption}}

Le résultat donne quelque chose comme:
Adobe Acrobat Update Service
Adobe Flash Player Update Service

Supprimer les double guillemets

Lorsque vous utilisez Export-CSV, cette commande ajoute automatiquement des guillemets autour de chaque donnée retournée. Pour enlever tous les guillemets des fichiers CSV à l’aide de PowerShell, l’article de Hey, Scripting Guy! donne une solution qui combine l’utilisation des commandes Export-Csv et Out-File. Toutefois, cette solution n’est pas pleinement satisfaisant car elle remplace aussi les guillemets qui seraient à l’intérieur d’une donnée !

(Get-Content .services.csv) -replace ‘ »‘, «  » | Out-File .services.csv -Encoding « UTF8″ -Force

Faites attention à l’affichage ambigüe des guillemets et des quotes dans WordPress. L’opérateur -replace a comme premier argument ‘ »‘, soit: une quote, un guillemet, une quote.
Le second argument est «  », soit: un guillemet, un guillemet.

La paramètre -Force permet d’écraser un fichier en lecture seule.

Une solution moins radicale consiste à utiliser une expression régulière avec la fonction replace pour supprimer uniquement les guillemets en début et en fin de chaîne de chaque donnée: ‘^ »(.*) »$’, ‘$1′. Le replacement doit se faire sur chaque donnée, et non pas ligne par ligne.

Tableaux / Arrays

Face à la diversité des choix, vous pouvez être tenté de manipuler toutes les données à l’aide de tableaux (« Arrays ») plutôt que de les stocker temporairement dans un fichier.

Si le volume de données manipulées n’est pas disproportionné, ce choix est souvent judicieux car la manipulation en mémoire reste souvent plus rapide que l’écriture sur un disque dur.

Toutefois, pour des raisons de conservations d’historique ou de traçabilité, vous devrez peut-être enregistrer les données manipulées dans un fichier.

Dans ce cas, n’utilisez pas l’opérateur -replace sur les objets. En effet, les commandes suivantes risquent de produire un résultat différent de vos attentes:

# Génére un fichier CSV à partir de la liste des services de l’ordinateur
Get-WmiObject win32_service | Select-Object Name, Caption | Export-Csv .services.csv -Delimiter « ¤ » -Encoding « UTF8″ -NoTypeInformation

# Alimente le tableau $Array à partir du fichier CSV
$Array = Import-Csv .services.csv -Delimiter « ¤ »

# Cherche à remplacer des caractères dans $Array puis génère un fichier TXT pour récupérer le résultat
$Array -replace « Adobe », »ADOBE » | Out-File .services-2.txt

# Cherche à remplacer des caractères dans $Array puis génère un second fichier CSV pour récupérer le résultat
$Array -replace « Adobe », »ADOBE » | Export-Csv .services-2.csv -Delimiter « ¤ » -NoTypeInformation

Le contenu de services-2.txt:

@{Name=ADOBEARMservice; Caption=ADOBE Acrobat Update Service}
@{Name=ADOBEFlashPlayerUpdateSvc; Caption=ADOBE Flash Player Update Service}

Le contenu de services-2.csv:

« Length »
« 61 »
« 76 »

L’opérateur -replace a converti l’objet tableau $Array en une seule chaine de caractères (string).

le fichier résultat services-2.txt contient les chaînes de caractères.

Le fichier résultat services-2.csv contient la longueur des chaînes de caractères. La chaîne « @{Name=ADOBEARMservice; Caption=ADOBE Acrobat Update Service} » fait exactement 61 caractères et la chaîne « @{Name=ADOBEFlashPlayerUpdateSvc; Caption=ADOBE Flash Player Update Service} » fait exactement 76 caractères.