Comme vous le savez déjà, j’ai lancé un petit projet CodePlex - SharePoint Management PowerShell scripts, afin de regrouper un ensemble de scripts PowerShell destinés à la gestion des plateformes SharePoint.
Parmis les scripts disponibles, j’ai donc fourni un script permettant l’Export et l’Import de Liste SharePoint.
Je me suis rendu compte à l’usage que ma première version de ce script (pour la fonction d’import) ne fonctionnait pas comme je le souhaitais :
- Toutes les dates de création et de modification étaient supprimées
- Tous les utilisateurs (créateur et modificateur) de la liste rechargée étaient remplacés par le compte utilisé lors de l’import
Ceci venait d’un paramètre manquant dans les “Settings” de l’import :
Ce paramètre peut avoir une des trois valeurs (Enum) suivantes :
- ImportAll, None, ReplaceUserWithSystemAccount (None est la valeur par défaut, ce qui explique le remplacement par l’utilisateur de l’Import)
Ainsi, j’ai donc modifié la fonction d’import de mon script afin d’intégrer correctement ce paramètre :
function Import-List([string]$DestWebURL, [string]$FileName, [string]$LogFilePath)
{
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint") > $null
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Deployment") > $null$settings = New-Object Microsoft.SharePoint.Deployment.SPImportSettings
$settings.IncludeSecurity = [Microsoft.SharePoint.Deployment.SPIncludeSecurity]::All
$settings.UpdateVersions = [Microsoft.SharePoint.Deployment.SPUpdateVersions]::Overwrite
$settings.UserInfoDateTime = [Microsoft.SharePoint.Deployment.SPImportUserInfoDateTimeOption]::ImportAll$site = new-object Microsoft.SharePoint.SPSite($DestWebURL)
Write-Host "DestWebURL", $DestWebURL$web = $site.OpenWeb()
Write-Host "SPWeb", $web.Url
$settings.SiteUrl = $web.Url
$settings.WebUrl = $web.Url
$settings.FileLocation = "C:\Temp\BackupRestoreTemp\"
$settings.BaseFileName = $FileName
$settings.LogFilePath = $LogFilePath
$settings.FileCompression = 1Write-Host "FileLocation", $settings.FileLocation
$import = New-Object Microsoft.SharePoint.Deployment.SPImport($settings)
$import.Run()$web.Dispose()
$site.Dispose()
}
Vous pouvez d’ailleurs retrouver la dernière version de ce script ainsi que tous les autres sur le site CodePlex.
Romelard Fabrice [MVP]
Commentaires
Enregistrer un commentaire