Sharepoint Online Vorgaengerversionen aut. loeschen
Hallo Miteinander,
ich bin auf der Suche nach einem Powershell Script mit dem man die Vorgaengerversionen von Dateien automatisch loeschen kann.
Wir haben zur Zeit einen starken Anstieg des verbrauchten Speicherplatz im Sharepoint. Da wir einige Dateien jeden Tag mehrmals laden und wieder speichern wird der freie Platz immer weniger.
Nun habe ich ein wenig nachgeforscht und ein paar Ideen gefunden die Abhilfe schaffen. Leider bekomme ich die nicht zum laufen. Hat vielleicht schon ein Sharepoint / Powershell Spezialist eine Idee wie man dem Platzschwund entgegenwirken kann?
Was mir noch nicht klar ist der $LibraryName. Wo wird der hergenommen?
Beim Ausfuehren des Scriptes kommt folgende Fehlermeldung:
Vielen Dank fuers lesen und einen schoenen Nachmittag.
Gruss
Klaus
ich bin auf der Suche nach einem Powershell Script mit dem man die Vorgaengerversionen von Dateien automatisch loeschen kann.
Wir haben zur Zeit einen starken Anstieg des verbrauchten Speicherplatz im Sharepoint. Da wir einige Dateien jeden Tag mehrmals laden und wieder speichern wird der freie Platz immer weniger.
Nun habe ich ein wenig nachgeforscht und ein paar Ideen gefunden die Abhilfe schaffen. Leider bekomme ich die nicht zum laufen. Hat vielleicht schon ein Sharepoint / Powershell Spezialist eine Idee wie man dem Platzschwund entgegenwirken kann?
# Parameters
$SiteURL = "https://meinedomain.sharepoint.com/sites/UnterseiteName"
$LibraryName = "????"
# Function to clear all file versions except the latest one, folder by folder within the library.
Function Cleanup-Versions([Microsoft.SharePoint.Client.Folder]$Folder)
{
Write-host "Processing Folder:" $Folder.ServerRelativeUrl -f Yellow
# Get the Site Relative URL of the folder
$Folder.ServerRelativeUrl.Replace($Folder.Context.web.ServerRelativeURL,[string]::Empty)
# Get all files from the folder
$Files = Get-PnPFolderItem -FolderSiteRelativeUrl $FolderSiteRelativeURL -ItemType File
# Iterate through each file
ForEach ($File in $Files)
{
# Get file versions
$Versions = Get-PnPProperty -ClientObject $File -Property Versions
Write-host -f White "`tScanning File:" $File.Name
If ($Versions.Count -gt 1) # Check if there's more than 1 version
{
# Delete all versions except the latest one
$Versions | Sort-Object -Property Created -Descending | Select-Object -Skip 1 | ForEach-Object {
$_.DeleteObject()
}
Invoke-PnPQuery
Write-Host -f Green "`t`tPrevious Versions of the File Deleted except the latest:" $File.Name
}
}
# Get sub-folders from the folder - Exclude "Forms" and hidden folders
$SubFolders = Get-PnPFolderItem -FolderSiteRelativeUrl $FolderSiteRelativeURL -ItemType Folder | Where {($_.Name -ne "Forms") -and (-Not($_.Name.StartsWith("_")))}
Foreach ($SubFolder in $SubFolders)
{
# Call the function recursively
Cleanup-Versions -Folder $SubFolder
}
}
# Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Interactive
$Web = Get-PnPWeb
# Get the root folder of the library
$RootFolder = Get-PnPList -Identity $LibraryName -Includes RootFolder | Select -ExpandProperty RootFolder
# Call the function with the root folder of the library
Cleanup-Versions -Folder $RootFolder
Was mir noch nicht klar ist der $LibraryName. Wo wird der hergenommen?
Beim Ausfuehren des Scriptes kommt folgende Fehlermeldung:
Cleanup-Versions : Die Argumenttransformation für den Parameter "Folder" kann nicht verarbeitet werden. Der Wert
"Microsoft.SharePoint.Client.Folder" vom Typ "Microsoft.SharePoint.Client.Folder" kann nicht in den Typ
"Microsoft.SharePoint.Client.Folder" konvertiert werden.
In Zeile:51 Zeichen:26
+ Cleanup-Versions -Folder $RootFolder
+ ~~~~~~~~~~~
+ CategoryInfo : InvalidData: (:) [Cleanup-Versions], ParameterBindingArgumentTransformationException
+ FullyQualifiedErrorId : ParameterArgumentTransformationError,Cleanup-Versions
Gruss
Klaus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 12916382916
Url: https://administrator.de/contentid/12916382916
Ausgedruckt am: 21.11.2024 um 13:11 Uhr
6 Kommentare
Neuester Kommentar
Müsste klappen, hab dein Script gerade mal auf mein Test Team losgelassen:
"Shared Documents" ist die Library und "Another channel" ist z.b. auch ein Teams Channel.
Cleanup-Versions -Folder $RootFolder
Processing Folder: /sites/ITTestTeam/Shared Documents
Processing Folder: /sites/ITTestTeam/Shared Documents/Another channel
Processing Folder: /sites/ITTestTeam/Shared Documents/archive test
Processing Folder: /sites/ITTestTeam/Shared Documents/archive test/More Files
"Shared Documents" ist die Library und "Another channel" ist z.b. auch ein Teams Channel.
Moin erstmal vielen Dank für das Skript.
Eine Sache ist mir noch aufgefallen und zwar fängt der Index der Versionen offensichtlich bei 0 an.
D.h. wenn ich nur damit wirklich nur die aktuellste Version überbleibt musste ich Zeile 23 u 26 wie folgend anpassen
Eine Sache ist mir noch aufgefallen und zwar fängt der Index der Versionen offensichtlich bei 0 an.
D.h. wenn ich nur damit wirklich nur die aktuellste Version überbleibt musste ich Zeile 23 u 26 wie folgend anpassen
If ($Versions.Count -gt 0) # Check if there's more than 1 version
$Versions | Sort-Object -Property Created -Descending | Select-Object -Skip 0 | ForEach-Object {