skip to content

Search

Syspirit
EN

SharePoint

SharePoint Online administration - sites, roles, permissions, Teams and PowerShell scripts!

SharePoint Online is Microsoft’s collaborative cloud platform for creating team sites, storing documents and managing permissions in a Microsoft 365 environment.

Installation and connection

ActionPowerShell Command
Install SharePoint moduleInstall-Module -Name Microsoft.Online.SharePoint.PowerShell -Force
Install PnP PowerShellInstall-Module -Name PnP.PowerShell -Force
Connect (Admin)Connect-SPOService -Url https://tenant-admin.sharepoint.com
Connect (PnP)Connect-PnPOnline -Url https://tenant.sharepoint.com/sites/sitename -Interactive
Verify connectionGet-SPOTenant
DisconnectDisconnect-SPOService

Site management

ActionCommand
List all sitesGet-SPOSite -Limit All
Search for a siteGet-SPOSite -Filter "Url -like '*marketing*'"
Create team siteNew-SPOSite -Url "https://tenant.sharepoint.com/sites/marketing" -Title "Marketing" -Owner "admin@tenant.com" -Template "STS#3"
Create communication siteNew-SPOSite -Url "https://tenant.sharepoint.com/sites/news" -Title "News" -Owner "admin@tenant.com" -Template "SITEPAGEPUBLISHING#0"
Modify site titleSet-SPOSite -Identity "https://tenant.sharepoint.com/sites/marketing" -Title "Marketing Team"
Delete siteRemove-SPOSite -Identity "https://tenant.sharepoint.com/sites/oldsite" -Confirm:$false
Restore deleted siteRestore-SPODeletedSite -Identity "https://tenant.sharepoint.com/sites/oldsite"

SharePoint roles and permissions

Default permission levels

RolePermissionsTypical usage
OwnerFull site controlTeam administrators
MemberRead, write, deleteActive collaborators
VisitorRead onlyConsultants, guests
DesignerMember + list/page managementContent managers
ContributorRead, write (no delete)Standard users

Detailed permissions

LevelReadWriteDeleteAdministrationDesign
Full ControlYesYesYesYesYes
DesignYesYesYesNoYes
CollaborateYesYesYesNoNo
ContributeYesYesNoNoNo
ReadYesNoNoNoNo

Permission management

ActionCommand
View site permissionsGet-PnPSiteCollectionAdmin -Connection $conn
Add site administratorAdd-PnPSiteCollectionAdmin -Owners "admin@tenant.com"
Remove administratorRemove-PnPSiteCollectionAdmin -Owners "admin@tenant.com"
Add userAdd-PnPGroupMember -Group "Site Members" -LoginName "user@tenant.com"
Remove userRemove-PnPGroupMember -Group "Site Members" -LoginName "user@tenant.com"
List group membersGet-PnPGroupMember -Group "Site Members"

Permission inheritance

# Break permission inheritance on a list
Set-PnPList -Identity "Documents" -BreakRoleInheritance -CopyRoleAssignments
 
# Restore permission inheritance
Set-PnPList -Identity "Documents" -ResetRoleInheritance

Microsoft Teams integration

ActionCommand/Interface
Associate existing site to TeamsTeams interface > Add a tab > SharePoint
Access Teams fileshttps://tenant.sharepoint.com/sites/teamname/Shared Documents
View Teams-linked sitesGet-SPOSite | Where-Object {$_.Template -eq "GROUP#0"}
Create Teams team (creates site)Teams interface or New-Team (Teams module)
Manage permissions via TeamsTeams interface > Settings > Members

Teams site structure

SharePoint Teams Site
|-- Shared Documents (Default library)
|-- [Channel] - General (Automatic folder)
|-- [Channel] - Marketing (One folder per channel)
+-- Custom lists (if created)

Storage and quotas

ActionCommand
View tenant storageGet-SPOTenant | Select StorageQuota,StorageQuotaAllocated
View site usageGet-SPOSiteContentMoveState -Identity "https://tenant.sharepoint.com/sites/marketing"
Set site quotaSet-SPOSite -Identity "https://tenant.sharepoint.com/sites/marketing" -StorageQuota 2048
List sites > 1GBGet-SPOSite -Limit All | Where-Object {$_.StorageUsageCurrent -gt 1024} | Select Url,StorageUsageCurrent

Export and management scripts

Export site list

# Complete site export with details
Get-SPOSite -Limit All | Select Url,Title,Owner,Template,StorageUsageCurrent,LastContentModifiedDate |
Export-Csv -Path "C:\temp\SharePointSites.csv" -NoTypeInformation -Encoding UTF8

Export permissions by site

# Detailed permissions export script
$sites = Get-SPOSite -Limit All
$results = foreach($site in $sites) {
    Connect-PnPOnline -Url $site.Url -Interactive
    $groups = Get-PnPGroup
    foreach($group in $groups) {
        $members = Get-PnPGroupMember -Group $group.Title
        foreach($member in $members) {
            [PSCustomObject]@{
                SiteUrl = $site.Url
                SiteTitle = $site.Title
                GroupName = $group.Title
                MemberName = $member.Title
                MemberEmail = $member.Email
                MemberType = $member.PrincipalType
            }
        }
    }
}
$results | Export-Csv -Path "C:\temp\SharePointPermissions.csv" -NoTypeInformation -Encoding UTF8

Bulk site creation via CSV

# Expected CSV format: SiteName,SiteUrl,Owner,Template
$sites = Import-Csv -Path "C:\temp\NewSites.csv" -Delimiter ";"
 
foreach($site in $sites) {
    try {
        New-SPOSite -Url $site.SiteUrl -Title $site.SiteName -Owner $site.Owner -Template $site.Template -Wait
        Write-Host "Site created: $($site.SiteName)" -ForegroundColor Green
    } catch {
        Write-Host "Error creating $($site.SiteName): $($_.Exception.Message)" -ForegroundColor Red
    }
}

Bulk add users

# CSV format: SiteUrl,UserEmail,Permission
$permissions = Import-Csv -Path "C:\temp\SitePermissions.csv" -Delimiter ";"
 
foreach($perm in $permissions) {
    try {
        Connect-PnPOnline -Url $perm.SiteUrl -Interactive
        $groupName = switch($perm.Permission) {
            "Read" { "Site Visitors" }
            "Contribute" { "Site Members" }
            "FullControl" { "Site Owners" }
        }
        Add-PnPGroupMember -Group $groupName -LoginName $perm.UserEmail
        Write-Host "Added $($perm.UserEmail) to $($perm.SiteUrl)" -ForegroundColor Green
    } catch {
        Write-Host "Error adding $($perm.UserEmail): $($_.Exception.Message)" -ForegroundColor Red
    }
}

Common site templates

TemplateCodeUsage
Team siteSTS#3Standard team collaboration
Communication siteSITEPAGEPUBLISHING#0Corporate news, announcements
Blank siteSTS#1Custom site from scratch
Enterprise WikiWIKI#0Knowledge base
Document CenterBDR#0Advanced document management

Common troubleshooting

ProblemSolution
Access deniedCheck permissions, inheritance, AD/Entra groups
Slow siteCheck library size, item count, views
Mobile not workingEnable “Allow mobile apps” in settings
OneDrive sync failsReset client, check special characters
Quota exceededIncrease quota or clean up old versions