Accueil > PowerShell, SharePoint > PowerShell & SharePoint

PowerShell & SharePoint


Depuis que SharePoint 2010 est arrivé, l’ensemble des administrateurs SharePoint (et autre également) retourne vers du bon vieux scripting à la bash mais … orienté objet.

Le but ici est de vous présenter globalement l’outil et son fonctionnement. C’est terrible & en plus c’est puissant !!

Qu’est-ce que PowerShell ?

Historiquement powershell est le successeur des interfaces en ligne de commande fournis par :

Commande.com (interface MS-DOS) de Millenium, et Windows 98 ainsi que ses prédécesseurs.

Cmd.exe de windows NT à partir de 1933.
PowerShell est plus proche du langage de script orienté objet que le shell comme le bash. Il n’y a aucune ressemblence entre le powershell et le batch de DOS/Windows.

Par contre les échanges entre composants se font sous forme d’objets et non pas de texte :
–          Sous unix, les echanges se font sous forme de pipe au format texte entre l’entree d’un composant et la sortie d’un composant.
–          Avec powershell, les echanges se font au format objet. PowerShell rend accessible en ligne de commande la librairie .NET.
Le cœur du langage est basée sur la norme POSIX 1003.2 suivie par Korn Shell
La syntaxe est alignée sur C# il est donc possible de convertir du code C# en PS et réciproquement.

Powershell est disponible en version :
–          US KB926139
–          Localisée en 10 langues KB926140
–          MUI KB9261241

PowerShell en résumé est :
–          Shell et language de scripting ( qui change de l’invite de commande cmd et du scripting vbs)
–          Puissance d’audit et de souplesse du code
–          Traitement et mise en forme des resultat
–          Acces au objet .NET et COM

Trois mises en application
–          Manipulation sur le File System (fonction de base du language)
–          PowerShell et SharePoint
–          Logs, Process et Services (monitoring et gestion d’alerte en temps réel)

Homogénéité & Cohérence

Get-Command sur le modèle <verb>-<nom>
Les 4 commandes de découverte
–          Get-command => informations de base sur les commandes
–          Get-Help => aide de base (utiliser –full)
–          Get-member => information sur les objets
–          Get-psdrive => informations sur les lecteurs étendus

Il existe 5 catégories de commandes

Alias Alias pour une commande Dir

Ls

Function Une suite de commandes existant en mémoire uniquement le temps d’une session PS (Parsée une seule fois) Help
Cmdlet Commandes prédéfinies Get-Command

Get-Process

Script Une suite de commandes existant dans un fichier chargé en mémoire pour l’exécution (parsée à chaque fois) ./mon_script.ps1
Application Fichier executable se trouvant dans le PATH Notepad

Il existe également des outils permettant le développement comme powergui. Mais à ne pas installer sur un serveur car non testé, il vaut donc mieux réduire le risque. En terme d’interface graphique il y a l’UI de PowerShell v2 qui dispose d’une petite interface graphique.
La meilleure méthode est bien évidemment d’utiliser un notepad. Comme NotePad++ avec les sources MSD N à coté.
Le CTP 3 de powershell n’est pas encore à installer sur des serveurs de production.

Un peu d’architecture

En exemple:

Chaque collection de sites comprend un certain nombre d’objets SPWeb, et chaque objet dispose de membres qui peuvent être utilisés pour gérer un site, notamment son modèle et son thème, mais aussi pour accéder aux fichiers et dossiers se trouvant sur le site. La propriété Webs retourne un objet SPWebCollection qui représente tous les sous-sites d’un site spécifié, et la propriété Lists retourne un objet SPListCollection qui représente toutes les listes dans le site.

AdminTemplate_PICTURE

Le modèle objet lui est celui-ci:

Et le modèle hiérarchique:

Au niveau de l’architecture serveur nous avons :

  1. L’objet  SPFarm (1) est l’objet le plus élevé dans la Windows SharePoint Services hiérarchie des modèles objet. La propriété Servers  (2) obtient une collection qui représente tous les serveurs dans le déploiement et la propriété Services (3) obtient une collection qui représente tous les services.
  2. Chaque objet SPServer (2) représente un ordinateur serveur physique. La propriété ServiceInstances fournit l’accès à l’ensemble d’instances de services individuels qui s’exécute sur l’ordinateur individuel.
  3. Chaque objet  SPService (3) représente un service logique ou une application installée dans la batterie de serveurs. Un objet service fournit l’accès aux paramètres de la batterie de serveurs du service d’équilibrage de la charge qu’une instance de service implémente. Les types dérivés de la classe SPService incluent, par exemple, les objets pour Windows Services, tels que le service de minuterie, de recherche, Microsoft SQL Server, le service de base de données, etc. Ils incluent également les objets des services Web, tels que Windows SharePoint Services ou les services de Microsoft Office System.
  4. Un objet  SPWebService (4) fournit l’accès aux paramètres de configuration pour un service logique spécifique ou une application. La propriété  WebApplications obtient la collection des applications Web qui exécutent le service.
  5. Un objet  SPDatabaseServiceInstance (5) représente une instance unique d’un service de base de données en cours d’exécution sur le serveur. La classe SPDatabaseServiceInstance dérive de la classe SPServiceInstance et par conséquent, hérite de la propriété Service, qui donne accès au service ou à l’application qui implémente l’instance. La propriété Databases obtient la collection de bases de données de contenus utilisée dans le service.
  6. Chaque objet  SPWebApplication (6) représente une application Web à charge équilibrée, basée sur les services IIS (Internet Information Services). L’objet SPWebApplication fournit l’accès aux informations d’identification et aux autres paramètres d’application au niveau batterie de serveurs. La propriété Sites obtient la collection des collections de sites dans l’application Web, et la collection de propriétés ContentDatabases des bases de données de contenu utilisées dans l’application Web. La classe SPWebApplication remplace la classe SPVirtualServer obsolète ; mais il peut toujours s’avérer utile de considérer un objet SPWebApplication comme serveur virtuel, autrement dit, comme un ensemble d’un ou plusieurs serveurs physiques qui apparaissent sous la forme d’un serveur unique aux utilisateurs.
  7. Un objet  SPContentDatabase (7)  hérite de la classe SPDatabase et représente une base de données qui contient des données utilisateur pour une application Web SharePoint. La propriété Sites obtient la collection des collections de sites pour lesquelles la base de données de contenu stocke des données, et la propriété  WebApplication obtient l’application Web parente.
  8. Un objet  SPSiteCollection (8) représente la collection des collections de sites dans l’application Web. La propriété ou l’indexeur Item obtient une collection de sites spécifiée à partir de la collection, et la méthode Add crée une collection de sites dans la collection.

Au niveau de l’architecture de site:

  1. Chaque objet  SPSite (1) , malgré son nom singulier, représente un ensemble d’objets SPWeb (2)   logiquement associés (voir ci-dessus). Un tel jeu est généralement appelé une « collection de sites », mais SPSite n’est pas une classe de collection Microsoft .NET standard contrairement à SPWebCollection. Au contraire, ses membres peuvent être utilisés pour gérer la collection de sites. La propriété AllWebs fournit l’accès à l’objet SPWebCollection qui représente la collection de tous les sites Web dans la collection de sites, y compris le site de niveau supérieur. La méthode Microsoft.SharePoint.SPSite.OpenWeb de la classe SPSite renvoie un site Web spécifique.
  2. Chaque collection de sites contient un nombre quelconque d’objets  SPWeb(2), et chaque objet possède des membres qui peuvent servir à gérer un site, y compris son modèle et son thème, ainsi qu’à accéder aux fichiers et aux dossiers sur le site. La propriété des sites Web renvoie un objet SPWebCollection qui représente tous les sous-sites d’un site spécifié, et la propriété  Lists (3) renvoie un objet SPListCollection qui représente toutes les listes dans le site.
  3. Chaque objet  SPList (3) possède des membres qui sont utilisés pour gérer des listes ou pour accéder aux éléments de ces listes. La méthode  GetItems (5) peut être utilisée pour exécuter des requêtes qui retournent des articles spécifiques. La propriété  Fields (4) renvoie un objet SPFieldCollection qui représente tous les champs, ou colonnes, dans la liste, et la propriété Items renvoie un objet SPListItemCollection qui représente tous les éléments, ou lignes, de la liste.
  4. Chaque objet  SPField (4) possède des membres qui contiennent des paramètres pour le champ.
  5. Chaque objet  SPListItem (5) représente une seule ligne dans la liste

La modélisation objet

La modélisation objet consiste à créer un modèle informatique du système de l’utilisateur (un système informatique). Ce modèle peut rassembler aussi bien des éléments du monde réel que des concepts ou des idées propres au métier ou au domaine duquel fera partie le système. La modélisation Objet consiste à définir, à qualifier dans un premier temps ces éléments sous forme de types, donc indépendamment de la mise en œuvre. C’est ce que l’on appelle l’analyse orientée objet ou OOA (Object-Oriented Analysis).

Puis, on propose une ou des solutions techniques pour représenter les éléments définis dans le système informatique. C’est ce que l’on appelle la conception orientée objet ou OOD (Object-Oriented Design). Une fois un modèle de conception établi, il est possible au développeur de leur donner corps dans un langage de programmation. C’est ce que l’on appelle la programmation orientée objet ou OOP (Object-Oriented Programming). À un modèle d’analyse peuvent correspondre plusieurs modèles de conception.

Pour écrire ces différents modèles, différents langages et méthodes ont été mis au point, dont OMT de Rumbaugh, BOOCH’93 de Booch et OOSE de Jacobson. Toutefois, ces méthodes ne permettaient de modéliser que certains types d’applications et se trouvaient limitées dans d’autres contextes. La méthode OMT prévalait sur l’ensemble des autres méthodes dans la première partie de la décennie 1990.

À partir de 1994, Rumbaugh, Booch et Jacobson ont décidé de s’unir dans l’élaboration d’une nouvelle méthode, suffisamment générique, pour pouvoir s’appliquer à quasiment tous les contextes applicatifs. Ils ont commencé d’abord par définir un langage de modélisation fortement inspiré de celles des méthodes des trois auteurs : UML (Unified Modeling Language). Une fois celui-ci pris en charge par l’OMG (Object Management Group), un organisme destiné à standardiser des technologies objet, comme CORBA (Common Object Request Broker Architecture), un interlogiciel  (middleware en anglais) objet réparti, Rumbaugh, Booch et Jacobson se sont attaqués à la méthode proprement dite: USDP (Unified Software Development Process). Cette méthode définit un cadre générique de développement objet avec UML comme langage de modélisation. USDP (généralement raccourci en UP) est une méthode itérative et incrémentale, centrée sur l’architecture et guidée par les cas d’utilisation et la réduction des risques. C’est aux concepteurs de s’attribuer cette méthode en l’instanciant à leur métier et à leur domaine.

Néanmoins pour un certain nombre de concepteurs objet, dont Bertrand Meyer, l’inventeur du langage orienté objet Eiffel, guider une modélisation objet par des cas d’utilisations est une erreur de méthode qui n’a rien d’objet et qui est plus proche d’une méthode fonctionnelle. Pour eux, les cas d’utilisations sont relégués à des utilisations plutôt annexes comme la validation d’un modèle par exemple.

Ouai OK mais côté vie réelle qu’est-ce que ça donne

Sur le site de codeplex vous trouverez une grande communauté et des scripts très intéressants sur SharePoint.

Vous pouvez aussi vous connecter sur le script center de Microsoft:

– http://technet.microsoft.com/fr-fr/scriptcenter/bb410849 (french)
– http://technet.microsoft.com/en-us/scriptcenter/bb410849 (english)

Si vous avez besoin de créer en automatique des collections de sites en vue de formation utilisateur, vous pouvez utiliser:
http://spspsgroup.codeplex.com/releases

L’ensemble ce base sur un fichier en csv avec le trigramme des personnes. (Evidemment c’est adaptable)
Je vous communiquerai pas la suite quelques scripts utiles comme:

– Avoir l’ensemble des informations de votre site,
– les propriétés d’un document,
– la liste des utilisateurs de la collection de site,
– le profil des utilisateurs,
– …

Backup & Restore avec le modèle objet de Sauvegarde / Restauration

Cette rubrique décrit l’architecture de sauvegarde de restauration du modèle objet dans SharePoint. Votre application de sauvegarde peut être une application indépendante ou une extension de l’ outil de ligne de commande Stsadm.exe .

Utilitaire de sauvegarde et de restauration du modèle objet

Au niveau supérieur du modèle objet se trouve la classe SPBackupRestoreConsole. Cette classe fournit un responsable des opérations de mise en file d’attente des tâches de sauvegarde et de restauration, et de la réalisation d’historiques des tâches sous forme de fichiers XML. Un objet de cette classe se trouve « juste sous » l’interface utilisateur d’une application de sauvegarde. Ses membres sont principalement des méthodes et des propriétés statiques qui fournissent des points de raccordement de l’interface utilisateur de l’application de sauvegarde. L’application d’Administration centrale et l’ outil de ligne de commande Stsadm.exe utilisent ces points de raccordement.

Il existe toujours un seul objet de cette classe créé la première fois qu’un de ses membres est appelé. Il reste en mémoire jusqu’à la prochaine réinitialisation de Internet Information Server (IIS) ; Toutefois, son occupation en mémoire est faible.

Chaque opération de sauvegarde ou de restauration particulière est représentée par un objet de la classe SPBackupRestoreConsoleObject créé par la méthode CreateBackupRestore de l’objet de la console. Les propriétés d’un de ces objets légers contiennent des informations sur l’opération, par exemple s’il s’agit d’une sauvegarde ou d’une restauration, l’emplacement des fichiers de sauvegarde, la méthode de sauvegarde ou de restauration, l’étape actuelle de l’opération et l’arborescence des composants de contenu en cours de sauvegarde ou de restauration. Ces objets comportent également une propriété Id de type Guid utilisée comme descripteur de l’objet qui peut être passé aux méthodes de SPBackupRestoreConsole. Par exemple, Run reçoit l’ID de l’opération (l’objet SPBackupRestoreConsoleObject) que la console exécutera ensuite. Enfin, chaque SPBackupRestoreConsoleObject possède une propriété Settings qui contient un objet persistant qui contient lui-même un modèle réutilisable de paramètres de sauvegarde ou de restauration. Cet objet identifie également le composant de contenu que l’opération doit sauvegarder ou restaurer. Les objets paramètres sont décrits en détail à la fin de cette section.

Alors que les objets SPBackupRestoreConsoleObject représentent des opérations, les composants de contenu eux-mêmes sont représentés par des objets SPBackupRestoreObject. Ces objets peuvent être imbriqués dans la propriété Children. Par conséquent, chacun représente une arborescence d’un ou plusieurs composants de contenu. Par exemple, une application Web serait représentée par un objet SPBackupRestoreObject qui aurait chaque base de données de l’application comme objet enfant SPBackupRestoreObject. L’arborescence des composants qui font l’objet d’une opération de sauvegarde ou de restauration est liée à l’objet SPBackupRestoreConsoleObject qui représente l’opération. Vous obtenez une référence à l’objet de niveau supérieur SPBackupRestoreObject dans l’arborescence en passant l’ID de l’objet SPBackupRestoreConsoleObject à la méthode GetRoot.

Un objet SPBackupRestoreObject est un conteneur de deux types d’objets critiques :

  • Dans sa propriété Information, l’objet SPBackupRestoreObject contient un objet SPBackupInformation ou SPRestoreInformation. Ces types d’objets contiennent des informations sur la procédure de sauvegarde ou de restauration d’un composant donné et les méthodes qui peuvent être appelées en interne par SPBackupRestoreConsoleObject et SPBackupRestoreObject au cours d’une opération. Plus particulièrement, ces classes contiennent des méthodes et des propriétés dont l’implémentation ne doit jamais changer, quel que soit le composant représenté. Elles sont donc verrouillées et la dérivation d’une nouvelle classe de leur parent, SPBackupRestoreInformation, n’est pas prise en charge.
  • Dans sa propriété IBackupRestore, l’objet SPBackupRestoreObject contient un objet qui implémente l’interface IBackupRestore (et peut également hériter de SPPersistedObject). L’implémentation de l’interface de ce dernier transforme un objet en quelque chose qui peut être sauvegardé et restauré. À l’instar d’un objet SPBackupRestoreInformation, un objet IBackupRestore contient des membres qui fournissent les informations et les méthodes nécessaires aux sauvegardes et aux restaurations. Cependant, les membres de IBackupRestore doivent avoir des implémentations différentes an fonction du type du composant de contenu qui est représenté. Plus important encore, l’implémentation comprend des gestionnaires d’événements pour les événements d’une opération, tels que OnBackup et OnRestore.

En dehors de se comporter comme un conteneur, SPBackupRestoreObject est une classe auxiliaire qui facilite les interactions entre les objets d’opération (SPBackupRestoreConsoleObject), d’une part, et les objets d’informations sur les composants (SPBackupRestoreInformation et IBackupRestore), d’autre part.

Les principales classes finales sont SPBackupSettings et SPRestoreSettings. Un objet d’un de ces deux types est passé à la méthode CreateBackupRestore lorsqu’une opération est créée. Chacun de ces objets contient des paramètres en vue de leur utilisation dans des opérations. Plus important encore, ils identifient, dans leur propriété IndividualItem, le composant de contenu qui est l’objet de la sauvegarde ou de la restauration.

Enjoy & Have Fun !

Advertisements
Catégories :PowerShell, SharePoint Étiquettes :
  1. 8 janvier 2016 à 15:52

    Continuez sur cette voie, c’est un bonheur de vous suivre.

  1. No trackbacks yet.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :