Partager via


SharePoint 2013: Exporter les infos des WSP dans un fichier csv et une liste SharePoint (fr-FR)

 

Introduction

Cet article est lié à un script PowerShell que j'ai dernièrement publié sur la Galerie de Technet : vous pouvez le trouver ici :SharePoint 2007/2010/2013 : infos WSP Export fichier csv et liste SharePoint  .

Ce script PowerShell recueille les données associées à vos solutions SharePoint (WSP) et les exporte vers un fichier csv et une liste SharePoint.

Il a été testé sur SharePoint 2007, SharePoint 2010 et SharePoint 2013.

Les données exportées sont les suivantes :

  • DisplayName
  • Deployed
  • ContainsCasPolicy
  • ContainsGlobalAssembly
  • ContainsWebApplicationResource
  • DeployedServers
  • DeployedWebApplications
  • DeploymentState
  • LastOperationDetails
  • Status

Je ne copie pas ici l'intégralité du script (216 lignes), mais je vais juste expliquer les principales étapes :

  • Parcourir les solutions (WSP)
  • Construire la structure contenant les données
  • Créer une liste SharePoint
  • Configurer la liste
  • Exporter les données dans le fichier csv
  • Exporter les données dans la liste SharePoint
  • Lancez un navigateur pour afficher la liste

Étape 1: Parcourez les solutions (WSP)

Récupérer la ferme (j'ai utilisé la réflexion pour rester compatible avec SharePoint 2007), puis parcourez les solutions à l'aide de sa propriété « Solutions ».

  # Get farm[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")$farm=[Microsoft.SharePoint.Administration.SPFarm]::Local
  # Get solutionsforeach ($solution in $farm.Solutions){    # Fill the data    ...

Etape 2: Construire la structure contenant les données

Créez un objet et ajoutez tous les membres, correspondant à toutes les propriétés des WSP à exporter.

 # Build structure$itemStructure = New-Object psobject $itemStructure | Add-Member -MemberType NoteProperty -Name "DisplayName" -value "" $itemStructure | Add-Member -MemberType NoteProperty -Name "Deployed" -value ""$itemStructure | Add-Member -MemberType NoteProperty -Name "ContainsCasPolicy" -value "" $itemStructure | Add-Member -MemberType NoteProperty -Name "ContainsGlobalAssembly" -value "" $itemStructure | Add-Member -MemberType NoteProperty -Name "ContainsWebApplicationResource" -value "" $itemStructure | Add-Member -MemberType NoteProperty -Name "DeployedServers" -value ""$itemStructure | Add-Member -MemberType NoteProperty -Name "DeployedWebApplications" -value "" $itemStructure | Add-Member -MemberType NoteProperty -Name "DeploymentState" -value "" $itemStructure | Add-Member -MemberType NoteProperty -Name "LastOperationDetails" -value "" $itemStructure | Add-Member -MemberType NoteProperty -Name "Status" -value ""

Etape 3: Créer une liste SharePoint

Une fonction dédiée créera la liste :

  • Récupère le SPWeb correspondant à l'URL du site passée en paramètre
  • Récupère le modèle de liste (Liste personnalisée)
  • Essaye de récupérer la liste ; si la liste trouvée, est est supprimée, puis recréée en utilisant le modèle de liste « Liste personnalisée »
 function CreateSharePointlist{    # Get SPWeb    try    {$currentWeb = (New-Object Microsoft.SharePoint.SPSite($siteUrl)).OpenWeb()}    catch    {        Write-Warning "The site '$siteUrl' cannot be found; the data will only be exported to the csv file."        return    }    # Get list template (Generic template)     $listTemplate = [Microsoft.SharePoint.SPListTemplateType]::GenericList        # Try to get list    $global:exportList = $currentWeb.Lists[$listName]     # Delete list if necessary    if($global:exportList -ne $null)    {$global:exportList.Delete()}    # Create list    $listId = $currentWeb.Lists.Add($listName,$listDescription,$listTemplate)      # Get list    $global:exportList = $currentWeb.Lists[$listName]

Etape 4: Configurer la liste

Une fonction dédiée va créer les colonnes à ajouter à la liste.

La fonction présentée à l'étape précédente :

  • Ajoute toutes les colonnes à la liste
  • Récupère l'affichage par défaut
  • Ajoute les colonnes correspondant aux données de l'affichage et supprime la colonne "Pièces jointes"
  • Met à jour l'affichage.
 function AddColumn($fieldType, $fieldLabel, $fieldRequired){    # Add column    $SPFieldType = [Microsoft.SharePoint.SPFieldType]::$fieldType     $exportList.Fields.Add($fieldLabel,$SPFieldType,$fieldRequired)}function CreateSharePointlist{    ...        # Add columns    $dump = AddColumn -fieldType "Boolean" -fieldLabel "Deployed" -fieldRequired $false    $dump = AddColumn -fieldType "Boolean" -fieldLabel "ContainsCasPolicy" -fieldRequired $false    $dump = AddColumn -fieldType "Boolean" -fieldLabel "ContainsGlobalAssembly" -fieldRequired $false    $dump = AddColumn -fieldType "Boolean" -fieldLabel "ContainsWebApplicationResource" -fieldRequired $false    $dump = AddColumn -fieldType "Note" -fieldLabel "DeployedServers" -fieldRequired $false    $dump = AddColumn -fieldType "Note" -fieldLabel "DeployedWebApplications" -fieldRequired $false    $dump = AddColumn -fieldType "Text" -fieldLabel "DeploymentState" -fieldRequired $false    $dump = AddColumn -fieldType "Note" -fieldLabel "LastOperationDetails" -fieldRequired $false    $dump = AddColumn -fieldType "Text" -fieldLabel "Status" -fieldRequired $false    # Update list    $global:exportList.Update()    # Get default view    $view = $global:exportList.Views[0]        # Add / delete columns from the view    try{$view.ViewFields.delete("Attachments")} catch{}    $view.ViewFields.add("Deployed")    $view.ViewFields.add("ContainsCasPolicy")    $view.ViewFields.add("ContainsGlobalAssembly")    $view.ViewFields.add("ContainsWebApplicationResource")    $view.ViewFields.add("DeployedServers")    $view.ViewFields.add("DeployedWebApplications")    $view.ViewFields.add("DeploymentState")    $view.ViewFields.add("LastOperationDetails")    $view.ViewFields.add("Status")        # Update default view    $view.Update()

Etape 5: Exporter les données dans le fichier csv

Pour chaque solution, une variable nommée « solutionsList » est remplie avec un élément de structure ; à la fin, elle est exportée vers le fichier csv.

 # Local variables$solutionsList = $null$solutionsList = @()# Get solutionsforeach ($solution in $farm.Solutions){    $solutionInfos = $itemStructure | Select-Object *;     $solutionInfos.DisplayName = $solution.DisplayName;    $solutionInfos.Deployed = $solution.Deployed;    $solutionInfos.ContainsCasPolicy = $solution.ContainsCasPolicy;    ...    $solutionsList += $solutionInfos;}# Export$solutionsList | Where-Object {$_} | Export-Csv -Delimiter "$delimiter" -Path "$exportPath\$fileName.csv" -notype;

Etape 6: Exporter les données dans la liste SharePoint

Dans la même partie du code que dans l'étape précédente (j'ai enlevé le code associé au fichier csv), créez un nouvel élément (SPItem) pour chaque solution trouvée et remplissez ses propriétés.
Mettez à jour l'élément à la fin.

 # Get solutionsforeach ($solution in $farm.Solutions){    ...    if ($exportToSharePoint)    {        # Create SPItem        $newItem = $global:exportList.Items.Add()    }    if ($exportToSharePoint)    {        $titleField = $global:exportList.Fields | where {$_.internalname -eq "LinkTitle"}        $newItem[$titleField] = $solution.DisplayName    }        if ($exportToSharePoint) {$newItem["Deployed"] = $solution.Deployed}    if ($exportToSharePoint) {$newItem["ContainsCasPolicy"] = $solution.ContainsCasPolicy}    $serverIndex = 0    foreach ($server in $solution.DeployedServers)    {       $solutionInfos.DeployedServers += $solution.DeployedServers[$serverIndex].Name +"`n";       $serverIndex++;    }    ...    if ($exportToSharePoint)    {        # Update SPItem        $newItem.Update()    }}

Etape 7: Lancez un navigateur pour afficher la liste

À la fin du script, un navigateur est lancé pour afficher le contenu de la liste.

 if ($exportToSharePoint){    write-host "The data have been copied in the SharePoint list." -foreground "green"        $ie = New-Object -ComObject InternetExplorer.Application    $ie.Navigate("$siteUrl/Lists/$listName/AllItems.aspx")    try{$ie.Visible = $true} catch{}}

Résultats

1. Script lancé avec tous les paramètres
 

http://i1.gallery.technet.s-msft.com/sharepoint-200720102013-3291f5ee/image/file/100294/1/7.png

  1. Contenu de la liste SharePoint

http://i1.gallery.technet.s-msft.com/sharepoint-200720102013-3291f5ee/image/file/100287/1/1.png

Références

Autres langues

Cet article est également disponible dans les langues suivantes :