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
- Contenu de la liste SharePoint
http://i1.gallery.technet.s-msft.com/sharepoint-200720102013-3291f5ee/image/file/100287/1/1.png
Références
- Gallerie TechNet : SharePoint 2007/2010/2013 : infos WSP Export fichier csv et liste SharePoint
.
Autres langues
Cet article est également disponible dans les langues suivantes :