Spring til indholdet

PnP PowerShell - det nye modul og egen appregistrering

PnP PowerShell blev i 2021 skrevet om til PowerShell 7 og Entra-godkendelse. Hvad der skiftede, hvorfor egen appregistrering er påkrævet siden september 2024.

Opdateret SharePoint OnlinePowerShellUdfasning 4 min. læsning

PnP PowerShell er det open source-modul, som de fleste scripts til SharePoint Online bruger, når de ikke nøjes med Microsofts eget Microsoft.Online.SharePoint.PowerShell. I januar 2021 blev det skrevet om fra bunden til PowerShell 7, og samtidig skiftede godkendelsen til Entra ID (dengang Azure AD). To ting fra den omskrivning rammer stadig scripts: det gamle modul er opgivet, og siden 9. september 2024 skal alle bruge en appregistrering, de selv har oprettet.

Status 9. oktober 2026: modulet hedder PnP.PowerShell, er et .NET 8-modul fra version 3, kræver PowerShell 7.4 eller nyere og har tæt på 900 cmdlets (GitHub). Det er et fællesskabsmodul, og der er ingen SLA eller direkte support fra Microsoft.

Fra 2021: nyt modul, nyt navn, ny godkendelse#

Den 28. januar 2021 udkom en ny udgave af PnP PowerShell til PowerShell 7. Den kører på Windows, macOS og Linux og i Azure Functions, Azure Automation og Azure Cloud Shell, og er mulig, fordi Microsoft havde udgivet CSOM til .NET Standard 2.0. Godkendelsen er flyttet helt til OAuth 2.0 og Azure AD. At logge på med brugernavn og adgangskode var allerede udfaset af Microsoft for CSOM til .NET Standard 2.0, og den gamle weblogin-metode byggede på teknik, der stod på listen over det, der skulle udfases (Developer Blog, 28. januar 2021).

Det nye modul er en efterfølger til det gamle PnP-PowerShell, som virkede på Windows og Windows PowerShell og også mod SharePoint Server 2013, 2016 og 2019. Den gamle repository er arkiveret med beskeden om, at det er lukket ned, og at kun PnP.PowerShell vedligeholdes (GitHub, PnP-PowerShell). Det nye modul virker ikke mod SharePoint Server on-premises. Scripts, der blev skrevet til det gamle modul, kan have brug for rettelser, fordi cmdlets og parametre er ændret.

Siden 9. september 2024: egen appregistrering er påkrævet#

I begyndelsen loggede Connect-PnPOnline på med en delt app, PnP Management Shell, som en administrator gav samtykke til én gang i tenanten med Register-PnPManagementShellAccess. Det var den vej, mange scripts tog, fordi den ikke krævede egen appregistrering.

Dokumentationen skriver, at det altid har været anbefalet at registrere en egen Entra-app, og at det fra 9. september 2024 er blevet et krav (PnP PowerShell). Support for den delte app er lukket. Udgave 2.12.0 af modulet, udkommet samme dag, er ifølge udgivelsesnoterne udgivet på grund af udfasningen af PnP Management Shell (GitHub, udgivelsesnoter). Scripts med interaktiv login, device login eller brugernavn og adgangskode, der ikke angav -ClientId til en egen app, kan derfor ikke længere logge på.

En ny registrering oprettes med PnP PowerShell selv. Det kræver mindst rollen Application Developer eller Global Administrator i Entra, og en administrator skal give samtykke bagefter:

1Register-PnPEntraIDAppForInteractiveLogin -ApplicationName "PnP.PowerShell" -Tenant contoso.onmicrosoft.com
2
3Connect-PnPOnline -Url "https://contoso.sharepoint.com/sites/demo" -Interactive -ClientId "<client id>"

Til scripts uden bruger (tidsstyrede opgaver, runbooks) bruges en app med certifikat. Det gøres med Register-PnPEntraIDApp, som kan oprette appen og et certifikat, og scriptet logger på med Connect-PnPOnline -ClientId -Tenant -Thumbprint eller en sti til certifikatet (PnP PowerShell, godkendelse). Vil en app kun have adgang til enkelte websteder, kan tilladelsen Sites.Selected bruges, se Sites.Selected - adgang for en app til kun ét websted. Samme certifikatkrav gælder, når den gamle app-only-adgang med client secret og Azure ACS skal erstattes, se Azure ACS og SharePoint Add-Ins udgår.

Versionerne og PowerShell#

Version 3.0 udkom 17. april 2025 og kræver PowerShell 7.4.0 eller nyere, fordi den bygger på .NET 8. Den virker ikke i Windows PowerShell 5.1, ISE eller PowerShell 7.3 og ældre. Pipelines i Azure DevOps eller GitHub Actions, som kører en ældre PowerShell, skal opdateres. Den sidste udgave, der kan bruges med PowerShell 5.1, er 1.12.0, som kan installeres med Install-Module PnP.PowerShell -RequiredVersion 1.12.0 (GitHub, README, GitHub, opgraderingsvejledning).

Tidslinjen#

  1. Lancering

    PnP PowerShell til PowerShell 7 udkommer, med Azure AD-godkendelse (Developer Blog)

  2. Ændring

    Den delte PnP Management Shell-app slettes, og egen appregistrering er påkrævet. Version 2.12.0 udkommer (PnP PowerShell)

  3. Ændring

    Version 3.0 kræver PowerShell 7.4 og .NET 8 (GitHub)

I månedsnoterne#

Det nye modul står i januar 2021 og med nye udgaver i juli 2021, juli 2022, november 2022 og december 2022. Omtalerne af PnP PowerShell i 2020 gælder det gamle modul. Flere scripts på siden bruger det, for eksempel Eksportér en SharePoint-liste til CSV med PowerShell og Find webstedets id i SharePoint.