SOLVED

SPO App Uninstall Scope Web

Copper Contributor

Hi all,

 

I need to bulk Remove/Uninstall a particular App installed to 100+ subsites (web).

Uninstall-PnpApp can only be scoped to Tenant or Site Collection.

Is it possible to scope to the Subsite? 

 

https://docs.microsoft.com/en-us/powershell/module/sharepoint-pnp/uninstall-pnpapp?view=sharepoint-p...

https://pnp.github.io/office365-cli/cmd/spo/app/app-uninstall/

2 Replies
best response confirmed by katnew (Copper Contributor)
Solution

@katnew 

 

I didn`t test this,However you can loop through all the subsites underneath the site collection and uninstall the app in the below way.

# Input Parameters
$credentials=Get-Credential
$URL="https://yoursites.sharepoint.com"

# Connect to SharePoint Online
Connect-PnPOnline -Url $URL -Credentials $credentials

# Get the site collections
$siteColl=Get-PnPTenantSite

# Loop through the site collections
foreach($site in $siteColl)
{


Connect-PnPOnline -Url $site .Url -Credentials $cred
Get-PnPSubWebs | ForEach-Object{
spo app uninstall --id <<Your APP ID>> --siteUrl $_.Url
}
}

 

Please test in your dev environment first.

Thanks @O365Developer !

Just looping back to this post, I did a little something like this:

$App = Get-PnPAppInstance -Identity $ID | Select-Object AppWebFullUrl, Id, Status, Title, WebId, SiteId
If ($App -ne $null) {
Uninstall-PnPAppInstance -Identity $ID -Force
}

Pretty much the same, but using the PnP commands <3  

1 best response

Accepted Solutions
best response confirmed by katnew (Copper Contributor)
Solution

@katnew 

 

I didn`t test this,However you can loop through all the subsites underneath the site collection and uninstall the app in the below way.

# Input Parameters
$credentials=Get-Credential
$URL="https://yoursites.sharepoint.com"

# Connect to SharePoint Online
Connect-PnPOnline -Url $URL -Credentials $credentials

# Get the site collections
$siteColl=Get-PnPTenantSite

# Loop through the site collections
foreach($site in $siteColl)
{


Connect-PnPOnline -Url $site .Url -Credentials $cred
Get-PnPSubWebs | ForEach-Object{
spo app uninstall --id <<Your APP ID>> --siteUrl $_.Url
}
}

 

Please test in your dev environment first.

View solution in original post