Générateur de commandes PowerShell pour SharePoint et Office 365

Générateur de commandes PowerShell pour SharePoint et Office 365

Microsoft propose un générateur de commandes PowerShell pour SharePoint et Office 365, disponible en ligne.

Vous sélectionnez votre produit : SharePoint Online, SharePoint Foundation 2013, SharePoint Server 2013, SharePoint Foundation 2010, SharePoint Server 2010, ou Office 365.

Ensuite, avec la souris vous déposez le verbe puis le nom de l’objet que vous voulez manipuler: les paramètres obligatoires apparaissent, ainsi que les paramètres optionnels.

La commande PowerShell est construite dynamiquement au fur et à mesure du remplissage des paramètres. Vous pouvez la copier grâce au gros bouton Copy to Clipboard : très simple et très pratique.

Exemple de construction dynamique d'une commande PowerShell pour SharePoint et Office 365

Vous avez aussi un mode rapide qui permet de sélectionner des actions communes comme la création d’un site web SharePoint en Powershell.

Commande rapide pour générer une commande PowerShell de création d'un site SharePoint

Windows PowerShell Command Builder for SharePoint 2013 Products and Office 365

 

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.

Diviser un fichier vCard en de multiples fichiers séparés avec Powershell

Les contacts de Gmail peuvent être exportés dans un fichier au format vCard pour une importation dans le carnet d’adresses Apple ou une autre application comme Outlook.

Le fichier produit s’intitule contacts.vcf. Il contient toutes vos adresses dans un seul fichier. Les adresses étant au format vCard, elles sont stockées dans le fichier sous la forme:
BEGIN:VCARD
VERSION:3.0
FN:Jean Dujardin
N:Dujardin;Jean;;;
EMAIL;TYPE=INTERNET:jean.dujardin@gmail.com
NOTE:Intelligence économique
END:VCARD

Chaque adresse est donc encadrée dans un bloc BEGIN:VCARD – END:VCARD.

Lorsque j’ai voulu importer ce fichier dans Microsoft Outlook 2013, celui-ci n’a lu que la première adresse. Pour contourner cette difficulté, j’ai trouvé sur le web un script en Windows PowerShell qui permet de lire un gros fichier pour générer des petits fichiers unitaires.

Le script de Paul Westlake a justement été écrit pour diviser un fichier vCard en de multiples fichiers séparés. Comme il correspondait parfaitement à mon besoin, je l’ai uniquement francisé.

Le script n’étant pas signé, pensez à modifier la préférence utilisateur de la stratégie d’exécution Windows PowerShell avec la commande Set-ExecutionPolicy.

Code actuel:
SplitVCF_V2_0_0.zip

Ancien code:
SplitVCF_V1_0_0.zip

Comment Manipuler le langage XML avec PowerShell

Dans cet article vous verrez comment manipuler du XML avec PowerShell. Plus précisément, vous verrez comment les applets de commandes permettent de créer ou d’interroger simplement des structures de données XML.

XML avec PowerShell

Windows PowerShell supporte directement le langage et le format XML. Vous pouvez gérer et manipuler un fichier XML ou une structure de données en XML grâce à quelques commandes de Windows PowerShell.

Tout d’abord, vous devez ouvrir une invite de commandes PowerShell. Dans cette invite de commandes, vous allez créer une variable typée XML, intitulée $monXML:

# Crée un objet XML
$monXML =[xml] « <Acheteur nom=’Fruits & Qualité’><Quantité>9</Quantité><Fruit>Poires</Fruit></Acheteur> »

Vous remarquerez la présence du type de données XML qui est représenté à l’aide de [xml]. La suite de la structure est classique dans XML.

Cette structure définit un Acheteur intitulé Fruits et Qualité. Elle spécifie que cet acheteur achète 9 Poires. En effet, le chiffre 9 est la valeur de la balise Quantité et Poires est la valeur de la balise Fruit.

Les balises Quantité et Fruit sont rattachés à la balise Acheteur.

L’attribut nom est un attribut de la balise Acheteur.

Lire la valeur d’un noeud XML avec PowerShell

La lecture d’une valeur d’un noeud XML avec PowerShell se fait en indiquant le chemin complet jusqu’au noeud visé. Le chemin complet se construit en concaténant les noeuds intermédiaires et en utilisant le point (« . ») comme séparateur.

Par exemple, pour obtenir la quantité, il suffit d’indiquer le chemin complet jusqu’au noeud Quantité.

# Donne la valeur du noeud Quantité
write-host -foregroundcolor yellow $monXML.Acheteur.Quantité

Résultat : 9

La valeur est de 9 car c’est la valeur obtenue en parcourant le chemin : $monXML puis Acheteur puis Quantité. Ensuite, PowerShell lit la valeur de la balise Quantité.

Pour obtenir le fruit, il suffit aussi d’indiquer le chemin complet du noeud :

# Donne la valeur du noeud Fruit
write-host -foregroundcolor yellow $monXML.Acheteur.Fruit

Résultat : Poires

La valeur est Poires car c’est la valeur obtenue en parcourant le chemin : $monXML puis Fruit. Ensuite, PowerShell lit la valeur de la balise Fruit.

Par ailleurs, vous pourriez écrire encore plus simplement en PowerShell :

# Donne la valeur du noeud Quantité
$monXML.Acheteur.Quantité

et

# Donne la valeur du noeud Fruit
$monXML.Acheteur.Fruit

aa

XML avec PowerShell
XML avec PowerShell

Comprendre les Commandes PowerShell SharePoint

Les commandes PowerShell SharePoint permettent d’exécuter automatiquement les tâches administratives liées à SharePoint. Un bon exemple d’application est celui de pouvoir créer de nouvelles listes sur les sites grâce à des commandes PowerShell SharePoint.

Commandes PowerShell SharePoint

Lors de la création d’une nouvelle liste, vous devez d’abord indiquer à SharePoint le modèle à utiliser. Aussi, pour lister tous les modèles, ouvrez SharePoint Management Shell puis tapez les commandes suivantes :

$Web=Get-SPWeb http://ged.nova.ad/sites/primeur/
$Web.ListTemplates | Select Name, Description

Commandes PowerShell SharePoint - Liste de Modèles
Commandes PowerShell SharePoint – Liste de Modèles

Ainsi, vous obtenez le nom et le début de la description de tous les modèles disponibles dans votre collection de sites.

Créer la liste SharePoint

Ensuite, choisissez le modèle que vous vous voulez et créez la liste avec la méthode Add().

$Template=$Web.ListTemplates[« Liste personnalisée »]
$Web.Lists.Add(« Commandes », »Liste des commandes »,$Template)

En cas de succès, SharePoint renvoie l’identifiant interne unique de la liste sur 32 caractères, le GUID.

Commandes PowerShell SharePoint - Liste personnalisée
Commandes PowerShell SharePoint – Liste personnalisée

Ensuite, une fois la liste créée, il est pratiquement indispensable de rajouter des colonnes.

Ajouter une nouvelle colonne

Donc, vous indiquez à SharePoint la liste sur laquelle vous travaillez. Puis vous indiquez le type de la colonne et son nom, toujours avec la méthode Add().

$List=$web.Lists.TryGetList(« Commandes »)
$varFieldTypeTexte=[Microsoft.SharePoint.SPFieldType]::Text
$List.Fields.Add(« FruitID »,$varFieldTypeTexte,$false)

En réalité, la colonne a bien été ajoutée, mais vous ne la voyez pas !

Commandes PowerShell SharePoint - Ajout colonne
Commandes PowerShell SharePoint – Ajout colonne

Pour la voir, vous allez dans les paramètres de la liste, et sous Colonnes, vous retrouvez bien FruitID .

Commandes PowerShell SharePoint - Nouvelle colonne
Commandes PowerShell SharePoint – Nouvelle colonne

Modifier l’affichage de la liste

L’ajout de colonnes ne modifie (heureusement !) pas par défaut les affichages. En effet, c’est à vous de le faire. Il vous reste donc à modifier l’affichage par défaut

$View=$web.GetViewFromUrl(« http://ged.nova.ad/sites/primeur/Lists/Commandes/AllItems.aspx »)
$Field=$List.Fields[« FruitID »]
$View.ViewFields.Add($Field)
$View.Update()

Commandes PowerShell SharePoint - Affichage modifié
Commandes PowerShell SharePoint – Affichage modifié

Voilà pour les principes.

Vous trouverez ci-dessous un script PowerShell complet à télécharger.

Ce script créé une liste intitulée « Commandes » avec 4 colonnes (« FruitID », « FruitNom », « DateAchat », « Quantite »).

L’affichage par défaut (« AllItems.aspx ») de la liste est modifié pour faire apparaître les 4 colonnes.

SPListeCreer_V1_0_0.zip

Enfin, si vous désirez un accompagnement pour vous aider à concevoir le contenu de vos sites Sharepoint, ou pour installer, configurer, auditer SharePoint, allez sur la page de contact.

Assembly du PowerShell SharePoint et développement .Net

Les premières lignes des scripts PowerShell SharePoint débutent par une ligne ou deux qui ressemblent plus ou moins à :

Add-PSSnapin « Microsoft.SharePoint.PowerShell »

ou bien à:

[Reflection.Assembly]::LoadWithPartialName(« Microsoft.SharePoint »)

Ces deux instructions chargent les fonctions de l’assembly du PowerShell SharePoint.

Si vous êtes un développeur .Net, vous savez déjà ce qu’est un assembly. Pour un administrateur récemment converti au PowerShell SharePoint, c’est certainement moins évident.

L’objet de cet article est de présenter très succinctement le rôle et l’intérêt d’un assembly pour un public de débutant en matière de développement Net.

Principes généraux de l’assembly

Physiquement, un assembly est un fichier .DLL ou .EXE. L’idée derrière l’assembly est de mettre à disposition un code partageable entre différentes applications. C’est le même principe que pour les anciens fichiers DLL des systèmes d’exploitations Windows qui n’utilisent pas le Framework .Net.

Toutefois, la comparaison s’arrête là car les différences sont nombreuses.

En effet, les assemblies présentent de nombreux avantages supplémentaires notamment en matière de sécurité, fiabilité et robustesse. Des fonctionnalités supplémentaires, comme par exemple le déploiement côte-à-côte (vu plus bas), permettent aussi de pallier aux faiblesses des anciennes DLL.

Dans la plupart des cas, l’assembly est physiquement dans le Global Assembly Cache (GAC). Le rôle du GAC est de partager les assemblies entre les applications. Une assembly qui n’est pas présente dans le GAC peut fonctionner parfaitement pour une application donnée.

Si le développeur veut partager son travail, son assembly devra être dans le GAC afin de communiquer avec des applications d’autres domaines, d’autres processus ou d’autres ordinateurs.

Bien évidemment, l’assembly peut être appelé par un script PowerShell SharePoint, un programme écrit dans du code géré (C# ou VB Net), etc.

Common Language Runtime (CLR)

Cette communication est faite sous le contrôle du Common Language Runtime NET (CLR).

Nativement, l’explorateur Windows ne permet pas d’afficher les dossiers du GAC comme d’habitude. Pour avoir un affichage classique du contenu du GAC, ouvrez une invite de commande en tant qu’administrateur et tapez:

regsvr32 /u C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\shfusion.dll

Si shfusion.dll se trouve dans le dossier v2.0.50727 qui correspond à la version du socle .Net : c’est probablement le cas.

Une fois la commande exécutée avec succès, vous pouvez explorer les dossiers du GAC avec l’explorateur Windows classique. Les dossiers principaux du GAC sont:

  • C:Windows\assembly
  • C:Windows\Microsoft.NET

Pour revenir ensuite à un affichage natif, tapez dans une invite de commande:

regsvr32 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\shfusion.dll

Pour connaître la liste précise des assemblies chargées au moment de l’exécution d’une commande PowerShell, ouvrez une invite de commande PowerShell en tant qu’Administrateur puis tapez la commande:

[appdomain]::currentdomain.getassemblies()

Microsoft Intermediate Language (MSIL)

Un fichier d’assembly englobe des ressources. En particulier, le manifeste et le code Microsoft Intermediate Language (MSIL).

Le manifeste est un fichier qui décrit l’assembly à travers des métadonnées comme par exemple le nom de l’assembly, sa version, sa culture, les autorisations de sécurité sous lesquelles l’assembly doit s’exécuter ou la liste des assemblies dépendants.

La culture concerne les usages en termes de formatage de dates, de monnaies, etc (http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.aspx).

Un programme peut utiliser une version d’un assembly tandis qu’un autre programme peut s’appuyer sur une version différente du même assembly sur le même ordinateur. C’est le déploiement côte à côte.

Le code MSIL n’est pas directement exécutable par un système d’exploitation comme Windows. Il doit être compilé en code natif pour être compris par le système d’exploitation.

Cette compilation peut être faite au fur et à mesure de l’appel des méthodes grâce à un compilateur Jusi-In-Time (JIT) fourni par le Common Language Runtime NET (CLR).

Le code natif peut aussi être généré par anticipation en une fois afin d’améliorer les performances de l’application.

Code source C#

Voici un exemple d’un code source en C#. Bien évidemment, vous pouvez aussi prendre un script en PowerShell SharePoint.

PowerShell SharePoint
Hello World C#

Le résultat en MSIL (extrait):

PowerShell SharePoint
Hello World MSIL

Aller plus loin avec le Net et le PowerShell SharePoint

Il est difficile de faire un tri dans toutes les ressources proposées sur le socle Net tant elles sont nombreuses et bien faites.

Toutefois, vous trouverez, dans les pointeurs ci-dessous, des informations pour démarrer en douceur un développement Net mais sur des bases solides:

Pour mettre en pratique, vous pouvez aussi suivre notre tutoriel qui explique, pas à pas, comment créer un WebPart Hello World avec Visual Studio.

Vous pouvez aussi consulter l’article suivant qui est spécifique au PowerShell SharePoint Découvrir comment utiliser PowerShell avec SharePoint.

 

Découvrir comment utiliser PowerShell avec SharePoint

Dans cet article, vous allez découvrir comment utiliser PowerShell avec SharePoint. Les commandes Windows PowerShell permettent d’automatiser tous les traitements à faire dans SharePoint.

Même si au début, cela réclame un petit investissement intellectuel, cela en vaut vraiment la peine.

Comment utiliser PowerShell avec SharePoint

Avant de les utiliser, allez dans Tous les programmes > Microsoft SharePoint 2010 Products > SharePoint 2010 Management Shell (à exécuter en tant qu’administrateur).

Toutefois, vous pourriez aussi lancer la commande PowerShell de Windows et tapez Add-PSSnapin Microsoft.SharePoint.PowerShell pour récupérer les cmdlets SharePoint.

Par ailleurs, dans le modèle objet de SharePoint, faites attention car SPSite est une collection de sites, tandis que SPWeb représente un site (ou un sous-site).

Tout d’abord, la première cmdlet à connaître est celle qui donne l’aide sur l’aide: Get-Help Get-Help. Les fichiers d’aide sont au format XML. Ils se trouvent dans le dossier C:/Program Files/Common Files/Microsoft Shared/Web Server Extensions/14/CONFIG/POWERSHELL/Help/fr-fr pour la version française.

D’autres exemples de cmdlet utiles pour savoir comment utiliser PowerShell avec SharePoint :

  • Liste de toutes les cmdlets de SharePoint: Get-Command -PSSnapin Microsoft.SharePoint.PowerShell. Pour connaître leur nombre: @(Get-Command -PSSnapin Microsoft.SharePoint.PowerShell).count.
  • Liste de toutes les méthodes et propriétés d’un objet du Modèle Objet de SharePoint (par exemple Get-SPSite): Get-SPSite | Get-Member. La même commande pour Get-SPWeb: Get-SPSite | Get-SPWeb | Get-Member.
  • Affiche toute l’aide d’une commande (par exemple Get-SPSite): Get-Help Get-SPSite -Full. Pour avoir uniquement les exemples: Get-Help Get-SPSite -Examples
  • Services SharePoint avec leurs états: Get-SPServiceInstance
  • Bases de données: Get-SPDatabase
  • Collections de sites et de leurs bases de données respectives: Get-SPSite -Limit All | select url, contentdatabase. Si vous omettez -Limit All, la requête ne renvoie que les 200 premiers objets.
  • Volume de stockage d’une collection de sites: Get-SPSite | select url, @{Expression={$_.Usage.Storage}}
  • Liste des sites basés sur un certain modèle de site (par exemple un site d’équipe): Get-SPSite -Limit All | Get-SPWeb -Filter {$_.Template -eq « STS#00 »}
  • Liste des modèles de sites de la ferme: Get-SPWebTemplate

Il existe bien d’autres cmdlets intéressantes.

Comment utiliser PowerShell avec SharePoint

Les cmdlets sont susceptibles d’utiliser une très grande quantité de mémoire. Aussi, afin d’éviter une fuite mémoire, vous pouvez utiliser les cmdlets Start-SPAssignment et Stop-SPAssignment. Ces cmdlets implémentent l’interface IDisposable afin de libérer la mémoire qui n’est plus utile. Voici deux exemples tirés de l’aide de la commande Get-SPSite qui utilisent la méthode d’affectation de collection :

Start-SPAssignment -Global
$s = Get-SPSite
$s.url
Stop-SPAssignment -Global

L’exemple ci-dessous utilise une méthode moins consommatrice de mémoire que la précédente grâce à des variables nommées :

$o = Start-SPAssignment
$s = $o | Get-SPSite
$s.url
Stop-SPAssignment $o

Lorsqu’on débute en PowerShell, et même après, le paramètre -WhatIf est précieux car il simule l’exécution de la cmdlet. Par exemple, la commande Get-SPSite | Remove-SPSite -WhatIf vous retournera WhatIf : Opération « Remove-SPSite » en cours sur la cible « http://mw41 », sans supprimer la collection de site. La difficulté est de savoir où positionner le paramètre -WhatIf quand les commandes sont imbriquées.

Vous trouverez ci-dessous, un programme en téléchargement libre qui:

  • Stocke les paramétres de configurations des fichiers journaux SharePoint dans un premier fichier texte,
  • Modifie la durée de conservation des journaux, ainsi que d’autres paramétres,
  • Stocke à nouveau les paramétres de configurations des fichiers journaux dans un nouveau fichier texte,
  • Compare avec une commande PowerShell les deux fichiers.

SPDiagnosticConfigParams_V1_0_0.zip