SharePoint Online : gérer les fichiers dont la version n'est pas archivée à l'aide de PowerShell
Lorsque les utilisateurs ne fournissent pas de valeur pour les valeurs des champs de métadonnées obligatoires lors du téléchargement de fichiers (dans l'expérience classique) ou lorsque les utilisateurs oublient d'archiver des documents alors que l'option « Exiger l'extraction » sous les paramètres de version d'une bibliothèque est définie sur « Oui », alors ces fichiers sont appelés « Fichiers sans version enregistrée ». Le(s) fichier(s) téléchargé(s) seront stockés sur SharePoint mais seront extraits et visibles uniquement par celui qui télécharge ! Cela arrive souvent lorsque les utilisateurs téléchargent en utilisant la vue Explorateur de fichiers !
Gérer les fichiers qui n'ont pas de version archivée dans SharePoint Online :
En tant qu'administrateur de site, vous pouvez devenir propriétaire des fichiers pour lesquels aucune version n'est archivée. Pour prendre le contrôle,
- Accédez au lien « Gérer les fichiers qui n'ont pas de version enregistrée » sous Paramètres de la bibliothèque,
- Sélectionnez les documents, cliquez sur le bouton « S'approprier la sélection » et confirmez l'invite.
Une fois que vous en avez pris possession, le document est supprimé de cette page et commence à apparaître dans la liste où il est téléchargé (uniquement pour vous, jusqu'à ce que vous l'enregistriez !) En tant que propriétaire du site, vous pouvez définir les propriétés des métadonnées si nécessaire, cochez -in et rendre ces documents visibles pour tous les utilisateurs.
PowerShell pour s'approprier et archiver tous les fichiers Qui n'ont pas de version archivée dans SharePoint Online :
#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
#Set parameter values
$SiteURL="https://Crescent.sharepoint.com/sites/Marketing/"
$ListName ="Documents"
Try{
#Get Credentials to connect
$Cred= Get-Credential
#Setup the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
#Get Checked out Files with no checked-in version
$List = $Ctx.Web.lists.GetByTitle($ListName)
$CheckedOutFiles = $List.GetCheckedOutFiles()
$Ctx.Load($List)
$Ctx.Load($CheckedOutFiles)
$Ctx.ExecuteQuery()
#Loop through each checked-out file
ForEach($File in $CheckedOutFiles)
{
#Take Ownership of the File
$CheckedOutByUser=$File.CheckedOutBy
$Ctx.Load($CheckedOutByUser)
$File.TakeOverCheckOut()
$Ctx.ExecuteQuery()
#Get the File and Check-in
$CheckInFileURL = [String]::Concat($List.ParentWebUrl, $File.ServerRelativePath.DecodedUrl.Replace($List.ParentWebUrl, [string]::Empty))
$CheckInFile = $Ctx.web.GetFileByServerRelativeUrl($CheckInFileURL)
$Ctx.Load($CheckInFile)
$Ctx.ExecuteQuery()
#Check in the file
$CheckInFile.CheckIn("Checked-in from PowerShell",[Microsoft.SharePoint.Client.CheckinType]::MajorCheckIn)
$Ctx.ExecuteQuery()
Write-Host -f Yellow "'$($CheckInFile.name)' at $($CheckInFile.ServerRelativeUrl) was Checked Out by: $($CheckedOutByUser.Email)"
Write-host -f Green "Checked In The File Successfully!"
}
}
Catch {
write-host -f Red "Error:" $_.Exception.Message
}
Puis-je devenir propriétaire et archiver tous les fichiers d'un utilisateur spécifique ? Bien sûr:
#Get the User
$User = $Web.EnsureUser("Salaudeen@crescent.com");
#Check if the File is checked out to the specific user
If($File.CheckedOutById -eq $User.Id)
{
#Take ownership and check-in
}
PnP PowerShell pour archiver tous les fichiers extraits sans version archivée
Ce script PowerShell archive tous les fichiers extraits pour un utilisateur particulier.
#Set Parameters
$SiteURL = "https://crescent.sharepoint.com/sites/Marketing"
$ListName = "Branding"
$UserID = "i:0#.f|membership|salaudeen@crescent.onmicrosoft.com"
#Connect to SharePoint Online site
Connect-PnPOnline -Url $SiteURL -Interactive
$Ctx = Get-PnPContext
#Get the List
$List = Get-PnPList $ListName
#Get the User
$CheckedoutByUser = Get-PnPUser -Identity $UserID
#Get All Checked-Out Files
$CheckedOutFiles = $List.GetCheckedOutFiles()
$Ctx.Load($CheckedOutFiles)
$Ctx.ExecuteQuery()
#Check-in All Files Checked out to the User
$CheckedOutFiles | ForEach-Object {
If($_.CheckedOutById -eq $CheckedoutByUser.Id)
{
#Take over the Checked-Out File
$_.TakeOverCheckOut()
$Ctx.ExecuteQuery()
#Check-in the file
$CheckInFileURL = [String]::Concat($List.ParentWebUrl, $_.ServerRelativePath.DecodedUrl.Replace($List.ParentWebUrl, [string]::Empty))
Set-PnPFileCheckedIn -Url $CheckInFileURL -CheckinType MajorCheckIn -Comment "Checked-In by the Script at $(Get-Date)"
Write-Host "Check-in the File: $CheckInFileURL"
}
}
