Enhance Restore-PnPRecycleBinItem to Avoid List View Threshold Errors via Direct Item Access #5096
+19
−7
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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
What is in this Pull Request ?
Description
This PR introduces a workaround to mitigate List View Threshold (LVT) errors encountered during recycle bin restore operations using Restore-PnPRecycleBinItem in SharePoint Online.
Previously, the cmdlet attempted to retrieve the recycle bin item via Identity.GetRecycleBinItem(Connection.PnPContext), which could trigger LVT violations when the recycle bin is large enough to exceed the list view limit.
This update adds logic to detect when Identity.Item is already populated and, in such cases, bypasses the call to GetRecycleBinItem. This allows the cmdlet to restore items directly from the provided object, avoiding enumeration of the entire recycle bin collection.
Benefits
Enables safe bulk restore operations using piped input:
PowerShell> Get-PnPRecycleBinItem | Restore-PnPRecycleBinItemShow
examples:
Get-PnPRecycleBinItem | Where-Object { $_.Email -eq "johndoe@outlook.com" } | Restore-Pnprecyclebinitem -Force
Get-PnPRecycleBinItem | ? { $_.Email -eq "johndoe@outlook.com" } | Restore-Pnprecyclebinitem -Force
Limitations
This is a client-side workaround; increasing or bypassing LVT constraints is not feasible as they are enforced server-side to protect backend performance.
The fix does not alter public API surface or expose internal identifiers.