PNP Connect to SharePoint Online with 3 DEMOS – Classic, Certificate, and Runbook
Wanted to share step-by-step procedures for how to connect PNP.PowerShell console to SharePoint Online. Three major methods are outlined below, each slightly more advanced than the previous. Drop any questions or comments at bottom of post. Cheers.

VIDEO 1 – Client ID and Client Secret plain text
Demo how to connect with Client ID and Client Secret plain text running PNP.PowerShell.
Steps are included for
- Register application with SharePoint Online (SPO) by opening “appregnew.aspx”
- Grant permission with SharePoint Online (SPO) by opening “appinv.aspx”
- Connect-PNPOnline using Client ID and Client Secret plain text Cheers
CODE
# PNP Client Secret # https://medium.com/ng-sp/sharepoint-add-in-permission-xml-cheat-sheet-64b87d8d7600 # https://www.koskila.net/fastest-way-to-verify-your-client-id-and-client-secret-are-valid-with-powershell/ <# The app identifier has been successfully created. Client Id: 12306f98-2d2f-49b8-88b3-0eddd71ec25f Client Secret: OhYnQV2Hq888LoZOz7C8QSKr81VCNyOWQG9XEjQP111= Title: PNP-PowerShell App Domain: localhost Redirect URI: https://localhost #> # Scope $tenant = "spjeff" $clientId = "1236f98-2d2f-49b8-88b3-0eddd71ec25f" $clientSecret = "OhYnQV2Hq888LoZOz7C8QSKr81VCNyOWQG9XEjQP111=" # Connect Connect-PnPOnline -Url "https://$tenant.sharepoint.com/" -ClientId $clientId -ClientSecret $clientSecret Get-PnPWeb | Format-Table -AutoSize
VIDEO 2 – PFX Certificate running PNP.PowerShell locally
Demo how to connect with PFX Certificate running PNP.PowerShell locally given PFX input file.
Steps are included for
- Register Application with Azure AD
- Generate certificate (PFX and CER) with private key saved locally
- Connect-PNPOnline using local PFX input file and private key password
PNP-Register.ps1
# PNP Register # https://pnp.github.io/powershell/articles/connecting.html # https://pnp.github.io/powershell/articles/authentication.html # https://docs.microsoft.com/en-us/powershell/module/sharepoint-pnp/register-pnpazureadapp?view=sharepoint-ps # https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredApps # https://mmsharepoint.wordpress.com/2018/12/19/modern-sharepoint-authentication-in-azure-automation-runbook-with-pnp-powershell/ # Scope $tenant = "spjeff" $clientFile = "PnP-PowerShell-$tenant.txt" # Register $password = ConvertTo-SecureString -String "password" -AsPlainText -Force $reg = Register-PnPAzureADApp -ApplicationName "PnP-PowerShell-$tenant" -Tenant "$tenant.onmicrosoft.com" -CertificatePassword $password -Interactive $reg."AzureAppId/ClientId" | Out-File $clientFile -Force
PNP-Connect.ps1
# PNP Connect # https://pnp.github.io/powershell/articles/connecting.html # https://pnp.github.io/powershell/articles/authentication.html # https://docs.microsoft.com/en-us/powershell/module/sharepoint-pnp/register-pnpazureadapp?view=sharepoint-ps # https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredApps # https://mmsharepoint.wordpress.com/2018/12/19/modern-sharepoint-authentication-in-azure-automation-runbook-with-pnp-powershell/ # Scope $tenant = "spjeff" $clientFile = "PnP-PowerShell-$tenant.txt" # Connect $clientId = Get-Content $clientFile $password = "password" $secPassword = $password | ConvertTo-SecureString -AsPlainText -Force Connect-PnPOnline -ClientId $clientId -Url "https://$tenant.sharepoint.com" -Tenant "$tenant.onmicrosoft.com" -CertificatePath '.\PnP-PowerShell-$tenant.pfx' -CertificatePassword $secPassword Get-PnPTenantSite | Format-Table -AutoSize
VIDEO 3 – PFX Certificate in Azure Automation Runbook
Demo how to connect with PFX Certificate running PNP.PowerShell in Azure Automation Runbook given PFX input file.
Steps are included for
- Register Application with Azure AD
- Generate certificate (PFX and CER) with private key saved locally
- Upload PFX into Azure Automation with [Exportable=Yes] and password
- Runbook code to download PFX at runtime (Get-AutomationCertificate)
- Connect-PNPOnline using Azure temp PFX file and private key password
CODE
# PNP Connect # https://pnp.github.io/powershell/articles/connecting.html # https://pnp.github.io/powershell/articles/authentication.html # https://docs.microsoft.com/en-us/powershell/module/sharepoint-pnp/register-pnpazureadapp?view=sharepoint-ps # https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredApps # https://mmsharepoint.wordpress.com/2018/12/19/modern-sharepoint-authentication-in-azure-automation-runbook-with-pnp-powershell/ # Scope $tenant = "spjeff" # Azure Certificate $password = "password" $secPassword = $password | ConvertTo-SecureString -AsPlainText -Force $cert = Get-AutomationCertificate -Name 'PNP-PowerShell-$tenant' $pfxCert = $cert.Export("pfx" , $password ) # 3=Pfx $certPath = "PNP-PowerShell-$tenant.pfx" Set-Content -Value $pfxCert -Path $certPath -Force -Encoding Byte # Connect $clientId = Get-Content $clientFile $password = "password" $secPassword = $password | ConvertTo-SecureString -AsPlainText -Force Connect-PnPOnline -ClientId $clientId -Url "https://$tenant.sharepoint.com" -Tenant "$tenant.onmicrosoft.com" -CertificatePath '.\PnP-PowerShell.pfx' -CertificatePassword $secPassword # Display Get-PnPTenantSite | Format-Table -AutoSize