Add site version policy management features to Set-PnPTenantSite and related commands#5300
Conversation
…related commands - Introduced parameters for managing version policies including: - EnableAutoExpirationVersionTrim - ExpireVersionsAfterDays - MajorVersionLimit - MajorWithMinorVersionsLimit - FileTypesForVersionExpiration - RemoveVersionExpirationFileTypeOverride - ApplyToNewDocumentLibraries - ApplyToExistingDocumentLibraries - InheritVersionPolicyFromTenant - Added new cmdlet New-PnPSiteManageVersionPolicyJob for batch version policy management. - Updated documentation for Set-PnPTenantSite to reflect new parameters and examples. - Implemented utility methods for version policy handling in SiteVersionPolicyUtilities. - Enhanced SetSite and related commands to support new version policy parameters.
There was a problem hiding this comment.
Pull request overview
Adds SharePoint Online site version policy management capabilities to existing site/tenant-site cmdlets and introduces a new admin cmdlet to queue site-level version policy trim/sync jobs.
Changes:
- Added site version policy parameters (inherit tenant defaults, auto-trim vs explicit limits, file type targeting, apply-to scope, and
-Force) toSet-PnPSiteandSet-PnPTenantSite. - Introduced
New-PnPSiteManageVersionPolicyJobfor queuing site-level list policy trim and/or sync operations (with optional-NoWait). - Added shared utility logic (
SiteVersionPolicyUtilities) and updated documentation + changelog.
Reviewed changes
Copilot reviewed 8 out of 8 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| src/Commands/Utilities/SiteVersionPolicyUtilities.cs | Centralizes validation + application of site version policy parameters onto SiteProperties. |
| src/Commands/Site/SetSite.cs | Adds new site property parameters and hooks into SiteVersionPolicyUtilities. |
| src/Commands/Site/NewSiteManageVersionPolicyJob.cs | New cmdlet to queue site-level version policy management jobs. |
| src/Commands/Admin/SetTenantSite.cs | Adds new tenant-site parameters and routes site version policy settings via SiteVersionPolicyUtilities. |
| documentation/Set-PnPTenantSite.md | Documents new parameters and adds examples for version policy scenarios. |
| documentation/Set-PnPSite.md | Documents new parameters and adds examples for version policy scenarios. |
| documentation/New-PnPSiteManageVersionPolicyJob.md | New cmdlet documentation with syntax, examples, and parameters. |
| CHANGELOG.md | Adds entries describing new cmdlet and new parameters. |
…entation for Set-PnPSite and Set-PnPTenantSite cmdlets Co-authored-by: Copilot <copilot@github.com>
| private SiteVersionPolicyOptions GetSiteVersionPolicyOptions() => new SiteVersionPolicyOptions | ||
| { | ||
| InheritVersionPolicyFromTenant = InheritVersionPolicyFromTenant.IsPresent, | ||
| EnableAutoExpirationVersionTrim = EnableAutoExpirationVersionTrim, | ||
| ExpireVersionsAfterDays = ExpireVersionsAfterDays, | ||
| MajorVersionLimit = MajorVersionLimit, | ||
| MajorWithMinorVersionsLimit = MajorWithMinorVersionsLimit, | ||
| FileTypesForVersionExpiration = FileTypesForVersionExpiration, | ||
| RemoveVersionExpirationFileTypeOverride = RemoveVersionExpirationFileTypeOverride, | ||
| ApplyToNewDocumentLibraries = ApplyToNewDocumentLibraries.IsPresent, | ||
| ApplyToExistingDocumentLibraries = ApplyToExistingDocumentLibraries.IsPresent | ||
| }; |
There was a problem hiding this comment.
Indentation in this newly added method uses tabs while the surrounding file uses spaces. This will likely fail style enforcement (or at least makes diffs noisy). Please reformat this block to match the file’s existing indentation style.
| private SiteVersionPolicyOptions GetSiteVersionPolicyOptions() => new SiteVersionPolicyOptions | |
| { | |
| InheritVersionPolicyFromTenant = InheritVersionPolicyFromTenant.IsPresent, | |
| EnableAutoExpirationVersionTrim = EnableAutoExpirationVersionTrim, | |
| ExpireVersionsAfterDays = ExpireVersionsAfterDays, | |
| MajorVersionLimit = MajorVersionLimit, | |
| MajorWithMinorVersionsLimit = MajorWithMinorVersionsLimit, | |
| FileTypesForVersionExpiration = FileTypesForVersionExpiration, | |
| RemoveVersionExpirationFileTypeOverride = RemoveVersionExpirationFileTypeOverride, | |
| ApplyToNewDocumentLibraries = ApplyToNewDocumentLibraries.IsPresent, | |
| ApplyToExistingDocumentLibraries = ApplyToExistingDocumentLibraries.IsPresent | |
| }; | |
| private SiteVersionPolicyOptions GetSiteVersionPolicyOptions() => new SiteVersionPolicyOptions | |
| { | |
| InheritVersionPolicyFromTenant = InheritVersionPolicyFromTenant.IsPresent, | |
| EnableAutoExpirationVersionTrim = EnableAutoExpirationVersionTrim, | |
| ExpireVersionsAfterDays = ExpireVersionsAfterDays, | |
| MajorVersionLimit = MajorVersionLimit, | |
| MajorWithMinorVersionsLimit = MajorWithMinorVersionsLimit, | |
| FileTypesForVersionExpiration = FileTypesForVersionExpiration, | |
| RemoveVersionExpirationFileTypeOverride = RemoveVersionExpirationFileTypeOverride, | |
| ApplyToNewDocumentLibraries = ApplyToNewDocumentLibraries.IsPresent, | |
| ApplyToExistingDocumentLibraries = ApplyToExistingDocumentLibraries.IsPresent | |
| }; |
| private static string[] NormalizeFileTypes(string[] fileTypes, string parameterName) | ||
| { | ||
| if (fileTypes == null) | ||
| { | ||
| return null; |
There was a problem hiding this comment.
The file type normalization logic is duplicated in multiple places (e.g., SetListVersionPolicy and SiteVersionPolicyUtilities). To avoid future drift/inconsistent behavior, consider centralizing this into a shared internal helper and reusing it here.
|
|
||
| ### Added | ||
| - Added `Get-PnPListVersionPolicy` and `Set-PnPListVersionPolicy` cmdlets to inspect and manage SharePoint Online document library version policies. [#5299](https://github.com/pnp/powershell/pull/5299) | ||
| - Added `Get-PnPListVersionPolicy` and `Set-PnPListVersionPolicy` cmdlets to inspect and manage SharePoint Online document library version policies. [#5300](https://github.com/pnp/powershell/pull/5300) |
There was a problem hiding this comment.
This changelog line now attributes the existing Get-PnPListVersionPolicy/Set-PnPListVersionPolicy cmdlets to PR #5300, but this PR’s diff doesn’t include changes for those cmdlets. Please avoid re-pointing existing changelog entries to an unrelated PR; instead, keep the original PR reference and add only new entries relevant to this PR.
Before creating a pull request, make sure that you have read the contribution file located at
https://github.com/pnp/powerShell/blob/dev/CONTRIBUTING.md
Type
Related Issues?
Fixes #X, partially fixes #Y, mentioned in #Z, etc.
What is in this Pull Request ?
Please describe the changes in the PR.
Guidance