Alla fyndtips från mellandagsrean

Radera versioner på Sharepoint?

Permalänk
Medlem

Radera versioner på Sharepoint?

Suttit halva dagen igår i Powershell med diverse olika script men inget har fungerat hittills.

Vad jag vill göra:
Radera alla utom de 10 sista versioner på alla filer på en Sharepoint-sida.
Finns inget inbyggt i SP för detta, helt galet.
Även om man sätter ned antalet/tid på versioner så tar det inte bort de versioner som redan finns.
De ligger då och tar upp en massa utrymme.

DMS Shuttle är det enda fungerande jag hittat men det kostar.
Något tips?

Visa signatur

[ Corsair 3500X ] [ Corsair HX750i ] [ AMD Ryzen 9800X3D ] [ Asus 4080 Super OC ] [ Asus TUF X870-Wifi ]
[ 32GB G.Skill Trident Z5 Neo 6000Mhz DDR5 ] [ Samsung 990 Pro 2TB + 960 EVO 500GB ] [ Logitech PRO X 2 ] [ Corsair H115i ] [ Win11 ]

Permalänk
Medlem
Skrivet av SirMacke:

Vad jag vill göra:
Radera alla utom de 10 sista versioner på alla filer på en Sharepoint-sida.
Finns inget inbyggt i SP för detta, helt galet.
Även om man sätter ned antalet/tid på versioner så tar det inte bort de versioner som redan finns.
De ligger då och tar upp en massa utrymme.

Är det Online eller On-Prem?

Har inte jobbat med SharePoint "på riktigt" på flera år nu, utan är endast site owner/admin numera.

Kanske kan detta peka dig åt rätt håll?
https://www.sharepointdiary.com/2018/05/sharepoint-online-del...

Har själv dokument här med nära 100-tals versioner. Kanske inte gör något med en fil på 50kB, men utrymmet krymper snabbt!

Exempel från sidan ovan, där VersionsToKeep är satt till 5;

#Define Parameters $SiteURL = "https://crescent.sharepoint.com/sites/Retail" $FileRelativePath = "/sites/Retail/Shared Documents/Sitemaps.xlsx" $VersionsToKeep = 5 #Connect to PnP Online Connect-PnPOnline -Url $SiteURL -Interactive #Get File Versions $File = Get-PnPFile -Url $FileRelativePath $Versions = Get-PnPProperty -ClientObject $File -Property versions #Notification of file collected Write-host -f Yellow "Scanning File:"$File.Name $VersionsCount = $Versions.Count write-host -f Cyan "`t Total Number of Versions of the File:" $VersionsCount $VersionsToDelete = $VersionsCount - $VersionsToKeep If($VersionsToDelete -gt 0) { write-host -f Cyan "`t Total Number of Versions to be deleted:" $VersionsToDelete #Delete versions For($i=0; $i -lt $VersionsToDelete; $i++) { If($Versions[$i].IsCurrentVersion) { $VersionsToDelete++ Continue } write-host -f Cyan "`t Deleting Version:" $Versions[$i].VersionLabel Remove-PnPFileVersion -Url $FileRelativePath -Identity $Versions[$i].ID -Force } Write-Host -f Green "`t Version History is cleaned for the File:"$File.Name }

Permalänk
Medlem

Nu har jag inte testat detta och jag saxxade det med hjälp av Copilot. Men det ser rimligt ut med den limiterade kodkunskap jag har. Någon annan får gärna bekräfta / modifiera. Testar du bör du göra det på en testsite först!

Install SharePoint Online Management Shell:
If you haven’t already, download and install the SharePoint Online Management Shell.
Connect to SharePoint Online:
Open the SharePoint Online Management Shell and run the following command to connect:
Connect-SPOService -Url https://yourdomain-admin.sharepoint.com

$siteUrl = "https://yourdomain.sharepoint.com/sites/yoursite" $libraryName = "Documents" # Connect to the site Connect-SPOService -Url $siteUrl # Get the list $list = Get-SPOSite -Identity $siteUrl | Get-SPOList -Identity $libraryName # Get all items in the list $items = Get-SPOListItem -List $list foreach ($item in $items) { # Get the versions of the item $versions = $item.Versions # Delete all versions except the last 10 for ($i = 0; $i -lt $versions.Count - 10; $i++) { $versions[$i].Delete() } }

Dold text
Visa signatur

I7 12700K, Asus RTX 3080 TI, Alienware AW3423DW och annat smått o gott.

Permalänk
Medlem

Online.
Har dock testat bägge dessa i PS 5+7 och får en massa om att dena ena och andra modulen inte finns eller argument inte går.
Installerat moduler men samma sak.
Testat olika datorer men icke.
Ska kolla igen på era när jag är vid datorn, kanske skiljer.

Skrivet av walkir:

Är det Online eller On-Prem?

Har inte jobbat med SharePoint "på riktigt" på flera år nu, utan är endast site owner/admin numera.

Kanske kan detta peka dig åt rätt håll?
https://www.sharepointdiary.com/2018/05/sharepoint-online-del...

Har själv dokument här med nära 100-tals versioner. Kanske inte gör något med en fil på 50kB, men utrymmet krymper snabbt!

Exempel från sidan ovan, där VersionsToKeep är satt till 5;

#Define Parameters $SiteURL = "https://crescent.sharepoint.com/sites/Retail" $FileRelativePath = "/sites/Retail/Shared Documents/Sitemaps.xlsx" $VersionsToKeep = 5 #Connect to PnP Online Connect-PnPOnline -Url $SiteURL -Interactive #Get File Versions $File = Get-PnPFile -Url $FileRelativePath $Versions = Get-PnPProperty -ClientObject $File -Property versions #Notification of file collected Write-host -f Yellow "Scanning File:"$File.Name $VersionsCount = $Versions.Count write-host -f Cyan "`t Total Number of Versions of the File:" $VersionsCount $VersionsToDelete = $VersionsCount - $VersionsToKeep If($VersionsToDelete -gt 0) { write-host -f Cyan "`t Total Number of Versions to be deleted:" $VersionsToDelete #Delete versions For($i=0; $i -lt $VersionsToDelete; $i++) { If($Versions[$i].IsCurrentVersion) { $VersionsToDelete++ Continue } write-host -f Cyan "`t Deleting Version:" $Versions[$i].VersionLabel Remove-PnPFileVersion -Url $FileRelativePath -Identity $Versions[$i].ID -Force } Write-Host -f Green "`t Version History is cleaned for the File:"$File.Name }

Testade
Connect-PnPOnline -Url $SiteURL -Interactive
Och fick
Connect-PnPOnline : A parameter cannot be found that matches parameter name 'Interactive'.

Skrivet av Sh4d0wfi3nd:

Nu har jag inte testat detta och jag saxxade det med hjälp av Copilot. Men det ser rimligt ut med den limiterade kodkunskap jag har. Någon annan får gärna bekräfta / modifiera. Testar du bör du göra det på en testsite först!

Install SharePoint Online Management Shell:
If you haven’t already, download and install the SharePoint Online Management Shell.
Connect to SharePoint Online:
Open the SharePoint Online Management Shell and run the following command to connect:
Connect-SPOService -Url https://yourdomain-admin.sharepoint.com

$siteUrl = "https://yourdomain.sharepoint.com/sites/yoursite" $libraryName = "Documents" # Connect to the site Connect-SPOService -Url $siteUrl # Get the list $list = Get-SPOSite -Identity $siteUrl | Get-SPOList -Identity $libraryName # Get all items in the list $items = Get-SPOListItem -List $list foreach ($item in $items) { # Get the versions of the item $versions = $item.Versions # Delete all versions except the last 10 for ($i = 0; $i -lt $versions.Count - 10; $i++) { $versions[$i].Delete() } }

Dold text

Har det installerat, kör
Connect-SPOService -Url https://yourdomain-admin.sharepoint.com
Får:
Connect-SPOService : No valid OAuth 2.0 authentication session exists
EDIT: anger jag adm-url så kommer jag en bit längre men får nästan direkt:
Get-SPOList : The term 'Get-SPOList' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify
that the path is correct and try again.

Visa signatur

[ Corsair 3500X ] [ Corsair HX750i ] [ AMD Ryzen 9800X3D ] [ Asus 4080 Super OC ] [ Asus TUF X870-Wifi ]
[ 32GB G.Skill Trident Z5 Neo 6000Mhz DDR5 ] [ Samsung 990 Pro 2TB + 960 EVO 500GB ] [ Logitech PRO X 2 ] [ Corsair H115i ] [ Win11 ]

Permalänk
Medlem
Skrivet av SirMacke:

Online.
Har dock testat bägge dessa i PS 5+7 och får en massa om att dena ena och andra modulen inte finns eller argument inte går.
Installerat moduler men samma sak.
Testat olika datorer men icke.
Ska kolla igen på era när jag är vid datorn, kanske skiljer.

Testade
Connect-PnPOnline -Url $SiteURL -Interactive
Och fick
Connect-PnPOnline : A parameter cannot be found that matches parameter name 'Interactive'.

Har det installerat, kör
Connect-SPOService -Url https://yourdomain-admin.sharepoint.com
Får:
Connect-SPOService : No valid OAuth 2.0 authentication session exists
EDIT: anger jag adm-url så kommer jag en bit längre men får nästan direkt:
Get-SPOList : The term 'Get-SPOList' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify
that the path is correct and try again.

Modulen Connect-SPOService är förlegad och ersätts med Connect-PnPOnline, läs på om hur du installerar den nyare modulen på länken nedan.
https://learn.microsoft.com/en-us/sharepoint/dev/declarative-...

Visa signatur

Also found as @piteball@mastodon.rockhost.se
vSphere Node - Dell PowerEdge R720xd, Xeon E5-2690, 272GB, 3TB SSD, Nvidia Tesla P4
XCP-ng Node - Dell PowerEdge R720xd, Xeon E5-2697v2, 256GB, 2TB SSD
Xpenology Storage - SuperMicro X10SLL-F/SC825TQ, Xeon E3-1231 v3, 16GB, 90TB HDD
Xpenology Backup - Dell PowerEdge R230, Xeon E3-1220v6, 16GB, 12TB HDD

Permalänk
Medlem

Du kan använda Pnp för detta. Finns exempel på denna sida som visar exakt hur du ska göra...

https://www.sharepointdiary.com/2018/05/sharepoint-online-del...

Tänk på att Pnp tagit bort sin multi tenant app registration. Så du behöver skapa en egen registrering och ta med den i connect-pnponline.

Permalänk
Medlem
Skrivet av elk49:

Du kan använda Pnp för detta. Finns exempel på denna sida som visar exakt hur du ska göra...

https://www.sharepointdiary.com/2018/05/sharepoint-online-del...

Tänk på att Pnp tagit bort sin multi tenant app registration. Så du behöver skapa en egen registrering och ta med den i connect-pnponline.

Har testat denna med, men samma med att moduler inte finns längre. Försökt installera dem men antingen finns de inte eller så fungerar de inte.

Visa signatur

[ Corsair 3500X ] [ Corsair HX750i ] [ AMD Ryzen 9800X3D ] [ Asus 4080 Super OC ] [ Asus TUF X870-Wifi ]
[ 32GB G.Skill Trident Z5 Neo 6000Mhz DDR5 ] [ Samsung 990 Pro 2TB + 960 EVO 500GB ] [ Logitech PRO X 2 ] [ Corsair H115i ] [ Win11 ]

Permalänk
Avstängd

# Anslut till SharePoint
Connect-SPOService -Url "https://dindomän-admin.sharepoint.com"

# Ange din webbplats
$siteUrl = "https://dindomän.sharepoint.com/sites/dinsida"
$web = Get-PnPWeb -Url $siteUrl

# Hämta alla filer i biblioteket
$libraryName = "DittBibliotek"
$files = Get-PnPListItem -List $libraryName

foreach ($file in $files) {
$fileItem = Get-PnPFile -Url $file.FieldValues["FileRef"] -AsFile -Force
$versions = Get-PnPFileVersion -Url $file.FieldValues["FileRef"]

# Radera versioner utom de 10 senaste
if ($versions.Count -gt 10) {
$versionsToDelete = $versions | Select-Object -First ($versions.Count - 10)
foreach ($version in $versionsToDelete) {
Remove-PnPFileVersion -Url $file.FieldValues["FileRef"] -VersionLabel $version.VersionLabel
}
}
}

Se till att du har nödvändiga behörigheter för att köra dessa kommandon.
Kontrollera att PnP.PowerShell är installerat, eftersom kommandona i exemplet använder PnP-modulen.

Permalänk
Medlem
Skrivet av CDYE:

# Anslut till SharePoint
Connect-SPOService -Url "https://dindomän-admin.sharepoint.com"

# Ange din webbplats
$siteUrl = "https://dindomän.sharepoint.com/sites/dinsida"
$web = Get-PnPWeb -Url $siteUrl

# Hämta alla filer i biblioteket
$libraryName = "DittBibliotek"
$files = Get-PnPListItem -List $libraryName

foreach ($file in $files) {
$fileItem = Get-PnPFile -Url $file.FieldValues["FileRef"] -AsFile -Force
$versions = Get-PnPFileVersion -Url $file.FieldValues["FileRef"]

# Radera versioner utom de 10 senaste
if ($versions.Count -gt 10) {
$versionsToDelete = $versions | Select-Object -First ($versions.Count - 10)
foreach ($version in $versionsToDelete) {
Remove-PnPFileVersion -Url $file.FieldValues["FileRef"] -VersionLabel $version.VersionLabel
}
}
}

Se till att du har nödvändiga behörigheter för att köra dessa kommandon.
Kontrollera att PnP.PowerShell är installerat, eftersom kommandona i exemplet använder PnP-modulen.

PnP.PowerShell Installerat
Get-PnPWeb : A parameter cannot be found that matches parameter name 'Url'.

Kört i ISE
PS7:
The term 'Connect-SPOService' is not recognized as a name of a cmdlet, function, script file, or executable
| program. Check the spelling of the name, or if a path was included, verify that the path is correct and try
| again.

Visa signatur

[ Corsair 3500X ] [ Corsair HX750i ] [ AMD Ryzen 9800X3D ] [ Asus 4080 Super OC ] [ Asus TUF X870-Wifi ]
[ 32GB G.Skill Trident Z5 Neo 6000Mhz DDR5 ] [ Samsung 990 Pro 2TB + 960 EVO 500GB ] [ Logitech PRO X 2 ] [ Corsair H115i ] [ Win11 ]

Permalänk
Medlem
Skrivet av SirMacke:

PnP.PowerShell Installerat
Get-PnPWeb : A parameter cannot be found that matches parameter name 'Url'.

Kört i ISE
PS7:
The term 'Connect-SPOService' is not recognized as a name of a cmdlet, function, script file, or executable
| program. Check the spelling of the name, or if a path was included, verify that the path is correct and try
| again.

Kör:

$siteUrl = "https://domain.sharepoint.com/sites/dinsite"

Connect-PnPOnline -URL $siteUrl -ClientID "APP_ID_PÅ_DEN_APP_REGISTRERING_DU_VILL_ANSLUTA_GENOM" -Interactive

$web = Get-PnPWeb

Permalänk
Medlem
Skrivet av elk49:

Kör:

$siteUrl = "https://domain.sharepoint.com/sites/dinsite"

Connect-PnPOnline -URL $siteUrl -ClientID "APP_ID_PÅ_DEN_APP_REGISTRERING_DU_VILL_ANSLUTA_GENOM" -Interactive

$web = Get-PnPWeb

Är inte så bra på det, App Id?
Vet typ vad det är men detta är SP Online.

Visa signatur

[ Corsair 3500X ] [ Corsair HX750i ] [ AMD Ryzen 9800X3D ] [ Asus 4080 Super OC ] [ Asus TUF X870-Wifi ]
[ 32GB G.Skill Trident Z5 Neo 6000Mhz DDR5 ] [ Samsung 990 Pro 2TB + 960 EVO 500GB ] [ Logitech PRO X 2 ] [ Corsair H115i ] [ Win11 ]

Permalänk
Medlem
Skrivet av SirMacke:

Är inte så bra på det, App Id?
Vet typ vad det är men detta är SP Online.

AppID är en guid som finns på den appregisteringen som behöver göras för att detta ska kunna köras. Detta är för att du som admin ska kunna hålla koll på hur du exponerar api-åtkomst. Gjorde en snabb google och hittade denna guide.

https://office365itpros.com/2024/08/29/pnp-powershell-changes...

Rekommenderar dock att du läser på lite om entra applications och api-åtkomst för att veta vad du håller på med. Eller ta hjälp av en leverantör som kan guida er i era lösningar. "Gör det själv"-organisationer tenderar att inte hålla koll på hur de exponerar sin data. Billigare att betala lite för att göra rätt från början än att försöka rädda upp ett intrång.