You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Added -PersistLogin on Connect-PnPOnline which will utilize a persist cache containing your access token. The cache is encrypted and stored in a subfolder in your $HOME folder on Windows. On MacOS the cache is stored in the encrypted KeyChain. You only have to specify -PersistLogin once when doing a Connect-PnPOnline, after that the cache entry will be used. The cache is persisted between PowerShell sesions and system reboots. To clear an entry from the cache use Disconnect-PnPOnline -ClearPersistedLogin.
Added tab completers for all cmdlets using a ListPipeBind parameter (e.g. Get-PnPList -Identity), all cmdlets using a FieldPipeBind parameter (e.g. Get-PnPField -Identity), Get-PnPPropertyBag, ContentType related cmdlets (Get-PnPContentType etc.) and Page related (Get-PnPPage etc.) cmdlets. The argument lookup will timeout after 2 seconds. This value can controlled by setting an environment variables called "PNPPSCOMPLETERTIMEOUT" and set the value to a number specifying milliseconds (e.g. 2000 is 2 seconds). If you want to disable the completer functionality on tabs, set the timeout value to 0 (zero).
Added Reset-PnPDocumentID cmdlet to request resetting the document ID for a document #4238
Added Reset-PnPDocumentID cmdlet to request resetting the document IDs for all documents in a library using a specific content type #4755
Added Get-PnPPriviledgedIdentityManagementEligibleAssignment, Get-PnPPriviledgedIdentityManagementRole and Enable-PnPPriviledgedIdentityManagement cmdlets to allow scripting of enabling Privileged Identity Management roles for a user #4039
Added Add-PnPTenantRestrictedSearchAllowedList which allows setting up a list of allowed URLs for Restricted SharePoint Search #3993
Added optional -IsCopilotSearchable to Add-PnPOrgAssetsLibrary which allows for an organizational assets library to be accessible to Microsoft 365 CoPilot for searching corporate images #4254
Added Set-PnPOrgAssetsLibrary cmdlet which allows for updating the settings of an existing organizational assets library #4254
Added additional Graph permissions to the GraphPermissions parameter set. #4283
Added -SignInAudience parameter to Register-PnPEntraIDApp and Register-PnPEntraIDAppForInteractiveLogin which allows you to make the EntraID app support creation of multi-tenant apps. #4289
Added -OutputInstance parameter to Export-PnPPage cmdlet to allow export of the page as in-memory template. #4323
Added -X509KeyStorageFlags parameter to Connect-PnPOnline cmdlet which allows setting of how private keys are to be imported. #4324
Added -RestrictContentOrgWideSearch parameter to Set-PnPSite which allows for applying the Restricted Content Discoverability (RCD) setting to a site #4335
Added -LaunchBrowser parameter to Register-PnPEntraIDAppForInteractiveLogin and Register-PnPEntraIDApp cmdlets to open browser and continue app registration in the browser. #4347 & #4348
Added Get-PnPSearchExternalItem which allows retrieving the current external items for a specific external connection #4375
Added Remove-PnPSearchExternalItem which allows for removal of an external item from the Microsoft Search index #4378
Added -Scopes parameter to Get-PnPAccessToken cmdlet to retrieve access token with specific scopes. #4398
Added -Icon and -Color parameters to Set-PnPList cmdlet. #4409
Added Remove-PnPTenantRestrictedSearchAllowedList cmdlet to removes site URLs from the allowed list when Restricted SharePoint Search is enabled. #4399
Added Get-PnPDeletedFlow cmdlet to retrieve a list of flows which are soft deleted. #4396
Added Restore-PnPFlow cmdlet which allows for undeleting a flow within 21 days of deletion. #4415
Added -ExcludeDeprecated to Export-PnpTaxonomy which allows for deprecated terms to be excluded from the export #4053
Added -HidePeoplePreviewingFiles to Set-PnPSite which allows for hiding the people previewing files feature on a site #4416
Added -AllowWebPropertyBagUpdateWhenDenyAddAndCustomizePagesIsEnabled to Set-PnPTenant which allows for updating of web property bag when DenyAddAndCustomizePages is enabled #4508
Added SiteId to the output of Get-PnPTenantSite#4527
Added Add-PnPFileSensitivityLabel which allows for assigning sensitivity labels to SharePoint files #4538
Add-PnPApp , Publish-PnPApp , Remove-PnPApp and Unpublish-PnPApp now have -Force parameter to change the site to allow scripts to be temporarily enabled. #4554
Added -CanSyncHubSitePermissions parameter to Set-PnPSite cmdlet to set value of allowing syncing hub site permissions to this associated site. #4555
Added Get-PnPProfileCardProperty, New-PnPProfileCardProperty and Remove-PnPProfileCardProperty cmdlets to manage showing additional properties on the Microsoft 365 user profile #4548
Added Get-PnPCopilotAdminLimitedMode and Set-PnPCopilotAdminLimitedMode which allows for managing the setting that controls whether Microsoft 365 Copilot in Teams Meetings users can receive responses to sentiment-related prompts #4562
Added -Contributors and -Managers parameters to New-PnPTermGroup and Set-PnPTermGroup cmdlets.
Added -Files parameter for Send-PnPMail cmdlet to allow files to be downloaded from SharePoint and then sent as attachments.
Added -Force parameter to Set-PnPPropertyBagValue cmdlet to toggle NoScript status of the site.
Added -Batch parameter to Invoke-PnPGraphMethod cmdlet to allow adding request in a batch.
Added -List parameter to Get-PnPFolderItem, Get-PnPFileInFolder and Get-PnPFolderInFolder which allows them to work with a document library containing more than 5,000 items #4611
Added Start-PnPTraceLog, Stop-PnPTraceLog and Get-PnPTraceLog cmdlets to handle tracelogging. Removed Set-PnPTraceLog cmdlet.
Added -ListPermissionScopes parameter on Get-PnPAccessToken cmdlet to list the current permission scopes on the current access token.
Added Get-PnPCopilotAgent cmdlet that returns the Microsoft Copilot Agents in a site collection.
Added Get-PnPFileRetentionLabel cmdlet to fetch the file retention labels. #4603
Added Get/Set/Remove-PnPUserProfilePhoto cmdlets to download, upload or remove the profile photo of the specified user.
Added New/Get/Remove/Update-PnPTodoList cmdlets to manage Todo lists.
Added Set-PnPFileRetentionLabel which allows setting a retention label on a file in SharePoint or locking/unlocking it. #4457
Added Get-PnPFileCheckedOut cmdlet to retrieve all files that are currently checked out in a library #4682
Added Get-PnPTenantPronounsSetting and Set-PnPTenantPronounsSetting cmdlets to manage the availability of using pronouns in the organization #4660
Added HidePeopleWhoHaveListsOpen parameter to Set-PnPSite cmdlet to hide people who simultaneously have lists open #4699
Added -WhoCanShareAllowListInTenant, -LegacyBrowserAuthProtocolsEnabled, -EnableDiscoverableByOrganizationForVideos, -RestrictedAccessControlforSitesErrorHelpLink, -Workflow2010Disabled, -AllowSharingOutsideRestrictedAccessControlGroups, -HideSyncButtonOnDocLib, -HideSyncButtonOnODB, -StreamLaunchConfig, -EnableMediaReactions, -ContentSecurityPolicyEnforcement and -DisableSpacesActivation to Set-PnPTenant#4681
Added Start-PnPEnterpriseAppInsightsReport and Get-PnPEnterpriseAppInsightsReport which allow working with App Insights repors #4713
Added Set-PnPSiteDocumentIdPrefix which allows changing of the document id prefix on a site collection #4765
Added Get-PnPMicrosoft365Roadmap which allows retrieval of the Microsoft 365 Roadmap items #4764
Added -Name parameter to Add-PnPApplicationCustomizer cmdlet to allow for specifying the name of the application customizer #4767
Added Get-PnPTraceLog cmdlet which allows reading from the detailed in memory logs of the PnP PowerShell cmdlet execution #4794
Added -Transitive parameter to Get-PnPAzureADGroupMember cmdlet to allow members of groups inside groups to be retrieved #4799
Added the ability to Get-PnPPage to return all site pages in the site by omitting the -Identity parameter #4805
Added Copy-PnPPage, Move-PnPPage and Get-PnPPageCopyProgress cmdlets to allow for copying and moving site pages between sites #4806
Added Get-PnPBrandCenterConfig to retrieve the configuration of the Brand Center on the tenant #4830
Added Get-PnPBrandCenterFontPackage to retrieve the available font packages from the various Brand Centers #4830
Added Use-PnPBrandCenterFontPackage to apply the specified font package from the Brand Center to the current site #4830
Added Add-PnPBrandCenterFont to upload a font to the tenant Brand Center #4830
Added -Stream parameter to Invoke-PnPSiteTemplate which allows an in memory .pnp site template to be applied to a site #4845
Changed
PnP PowerShell is now .NET 8.0 based, and requires PowerShell 7.4.6 or newer
-Interactive login is now the default.
The Popup based authentication for Interactive Login has been removed and replaced by a browser flow
-LaunchBrowser has been removed for interactive login
-LaunchBrowser for Device Login authentication flows has been renamed to OpenBrowser
Rate limiting is now enabled by default for all cmdlets which are being executed under application permissions.
Changed the UI experience when logging in with Interactive login and specifying -LaunchBrowser on Connect-PnPOnline. This experience is the default on MacOS.
In case of errors when Graph batch method is used, it will now throw a clearer error message about what was the issue. #4327
Get-PnPAccessToken, Request-PnPAccessToken and Get-PnPGraphAccessToken output type is changed to Microsoft.IdentityModel.JsonWebTokens.JsonWebToken. Earlier they returned System.IdentityModel.Tokens.Jwt.
New-PnPContainerType will temporarily disable standard containers to be created due to changed being applied at Microsoft to allow this to be possible in the future #4125
Renamed Get-PnPLabel cmdlet to Get-PnPRetentionLabel. #4387
Add-PnPNavigationNode cmdlet updated to now support -OpenInNewTab parameter for different types of navigation. #3969
Remove-PnPFile , Rename-PnPFile, Set-PnPFileCheckedIn, Set-PnPFileCheckedOut & Undo-PnPFileCheckedOut cmdlets now use PnP Core SDK behind the scenes. #4389
Set-PnPFileCheckedIn cmdlet now expects CheckInType to be of type PnP.Core.Model.SharePoint.CheckinType instead of the earlier one based on CSOM. #4389
Disable-PnPFeature and Enable-PnPFeature now use PnP Core SDK for processing requests. #4390
Remove-PnPContentType and Remove-PnPContentTypeFromList now use PnP Core SDK for processing requests. #4390
Clear-PnPRecycleBinItem , Move-PnPRecycleBinItem and Restore-PnPRecycleBinItem cmdlets now use PnP Core SDK for processing requests. #4393
Get-PnPSearchCrawlLog cmdlet now shows a warning in case application permissions are used. #4391
All Power Platform cmdlets no longer require an environment to be specified. If omitted, the default environment will be retrieved and used. #4415
When passing in an existing connection using -Connection on Connect-PnPOnline, the clientid from the passed in connection will be used for the new connection #4425
Removed -Confirm parameter from Remove-PnPUser and Remove-PnPAvailableSiteClassification cmdlets. Use -Force instead. #4455
Get-PnPFile now also supports passing in a full SharePoint Online URL #4480
Add-PnPApp , Publish-PnPApp , Remove-PnPApp and Unpublish-PnPApp now support disabling script settings if tenant app catalog is a no-script site.
Send-PnPMail now throws a warning about the retirement of the SharePoint SendEmail API.
Get-PnPCustomAction now supports a completer for -Identity and uses the PnP Core SDK to return custom actions.
Set-PnPPropertyBagValue and Remove-PnPPropertyBagValue now toggle the NoScript status of the site to allow setting/removing property bag values, but only if the tenant wide AllowWebPropertyBagUpdateWhenDenyAddAndCustomizePagesIsEnabled is not enabled #4680
Get-PnPTenant now uses nullable types for the properties that can return null if the property is not set or could not be retrieved. Beware that the property PublicCdnOrigins has been renamed to PublicCdnOriginParsed . All other property names will remain the same. #4722
Removed New-PnPMicrosoft365Group setting the group visibility options twice when providing -HideFromAddressLists and/or -HideFromOutlookClients and adding logging around trying to set the group visibility #4791
Visual Studio Code launch profiles have been cleaned up and restructured #4808
The cmdlet Get-PnPContainer now has a new optional parameter -ArchiveStatus which allows filtering SharePoint Online Embedded containers by archival status #4821
Fixed
Fixed issue with Set-PnPSearchExternalSchema cmdlet when used with the -Wait parameter throwing a warning #4253
Fix Get-PnPSearchExternalSchema not returning the label properly for a property linked to 'iconUrl' #4245
Fix Restore-PnPListItemVersion cmdlet to also restore fields with TaxonomyFieldType. #4262
Fix Set-PnPMicrosoft365GroupSetting cmdlet to not throw runtime error. #4274
Fix New-PnPMicrosoft365GroupSetting cmdlet to not throw runtime error. #4277
Fix Get-PnPSiteTemplate -PersistMultiLanguageResources not working correctly for xml file types. #4326
Fix Add-PnPDataRowsToSiteTemplate setting keyColumn to null when not passed. #4325
Fix Connect-PnPOnline not working correctly when -DeviceLogin and -LaunchBrowser both are specified. It used to open it in a popup. Now it correctly launches the browser. #4325
Export-PnPUserInfo, Export-PnPUserProfile and Remove-PnPUserProfile cmdlets now work properly with proper -Connection parameter if specified. #4389
Fixed Get-PnPAzureADAppSitePermission, Grant-PnPAzureADAppSitePermission and Revoke-PnPAzureADAppSitePermission cmdlets throwing an error when the site URL is not specified and the app registration used only having Graph permissions #4421
Fixed Get-PnPTerm cmdlet not working correctly when -ParentTerm parameter is specified. #4454
Fixed the PnP PowerShell version check to only check nightly version in nightly builds and major version in release builds. #4453
Fixed -ConsistencyLevelEventual flag on Invoke-PnPGraphMethod to work correctly. #4523
Fixed Get-PnPServiceHealthIssue returning an error when certain service states were active #4530
Fixed Add-PnPFileSensitivityLabel cmdlet to allow empty string value to reset file sensitivity label.
Fix Connect-PnPOnline cmdlet not working with On Prem related cmdlets. #4622
Fix Get\Invoke-PnPSiteTemplate cmdlet not working in vanity domains. #4630
Fixed passing a Get-PnPRecycleBinItem result or a GUID to Restore-PnPRecycleBinItem not working correctly. #4667
Fixed Get-PnPChangeLog not returning the changelog #4707
Fixed -Description and -Sequence not being applied when providing these through Add-PnPApplicationCustomizer#4767
Fixed -RetryCount parameter being ignored with Submit-PnPSearchQuery#4784
Fixed Get-PnPSiteScriptFromWeb throwing a file not found error when providing a web URL through -Url that differed from the connected to URL #4785
Fixed Set-PnPListItem -Values @{} passing in a taxonomy field with a guid typed value throwing an error #4811
Fixed Get-PnPFolder throwing an exception when a lot of files and folders are present #4819
Fixed Set-PnPTerm -Name "New Name" -Lcid 1043 changing the default name of the taxonomy item, ignoring the provided language id and changing the name for the default language instead. #4824
Fixed Get-PnPPropertyBag not returning updated values after running it for the first time #4823
Fixed local build of PnP PowerShell using a local Core SDK build not being debuggable and optimized PnP PowerShell debug profiles for Visual Studio Code #4838
Fixed Batched requests using a DELETE or MERGE throwing an exception because of a double IF-MATCH header Core #1635
Removed
Removed -LaunchBrowser, -NoPopup and credential based auth on Register-PnPEntraIDApp and Register-PnPEntraIDAppForInteractiveLogin cmdlets. The default auth method is now Interactive.
Removed -LaunchBrowser option on Connect-PnPOnline for interactive logins and device logins as it is default now and the popup based authentication window has been removed.
Removed -UseWebLogin option on Connect-PnPOnline. It used a very old, questionable approach to authentication. Use -Interactive or if you require an ACS connection -ClientId and -ClientSecret
Removed Invoke-PnPTransformation cmdlet as it was never supported.
Removed Publish-PnPCompanyApp cmdlet as it was not supported anymore. #4387
Removed -UserVoiceForFeedbackEnabled parameter from Set-PnPTenant cmdlet as it was obsolete. #4387
Removed Set-PnPLabel and Reset-PnPLabel aliases. You need to use Set-PnPRetentionLabel and Reset-PnPRetentionLabel respectively. #4387
Removed Get-PnPPowerPlatformConnector alias. You need to use Get-PnPPowerPlatformCustomConnector. #4387
Removed -IsFavoriteByDefault parameter from Add-PnPTeamsChannel cmdlet. It was obsolete and not supported by Graph API. #4387
Removed Get-PnPAppAuthAccessToken , Remove-PnPGraphAccessToken and Request-PnPAccessToken cmdlets. Use Get-PnPAccessToken instead. #4398
Removed support for sending mail via SMTP in Send-PnPMail. It's usage is not recommended by .NET due to its lack of support for modern protocols.
Removed -Title and -Header parameters from Remove-PnPNavigationNode. They were marked obsolete.
Removed -FileUrl parameter from Get-PnPSharingLink. It was marked obsolete.
Removed -WebLogin parameter from Connect-PnPOnline cmdlet. It was marked obsolete and was a security risk.
Removed Set-PnPMinimalDownloadStrategy as it's not applicable anymore to SharePoint Online. If you need the functionality you can always turn on the feature with Enable-PnPFeature -Id 87294c72-f260-42f3-a41b-981a2ffce37a or turn it off with Disable-PnPFeature -Id 87294c72-f260-42f3-a41b-981a2ffce37a
Removed -SPOManagementShell parameter from Connect-PnPOnline cmdlet. It reduces the risk of changes coming from Microsoft. Use your own Entra ID app instead.
Removed Set-PnPTraceLog cmdlet and introduced Start-PnPTraceLog and Stop-PnPTraceLog with similar parameters.
Removed -DelayDenyAddAndCustomizePagesEnforcement parameter from Set-PnPTenant cmdlet as it is no longer valid , removed from underlying SDK and its value can't be changed.
Removed -EnableVersionExpirationSetting parameter from Set-PnPTenant cmdlet as it is now enabled by default.