Friday, 25 October 2019

Update Site Collection Administrator

Handy script that can be used for removing or adding a Site Collection Administrator.



#region AboutMe
####################################################################################################
# ABOUT: Restore Permissions on an OneDrive Site by adding the admin account as Site Coll Admin
#        ParametersInput: User account and OneDrive Url 
#
# Date: 19/Sep/2019
# Author: Jaqueline Goncalves
####################################################################################################
#endregion AboutMe

#region Variables

$env = "Company'sEnvironmentName"

$config = @{
    siteAdminUrl = "https://$($env)-admin.sharepoint.com"
}


#endregion Variables
Function Add-SiteCollectionAdministrator{
    Param(
        $siteAdminUrl,
        $siteColUrl,
        $siteColAdminUser
    )

    Update-SiteCollectionAdministrator -siteAdminUrl $siteAdminUrl -siteColUrl $siteColUrl 
-siteColAdminUser $siteColAdminUser -isSiteColAdmin:$true
}

Function Remove-SiteCollectionAdministrator{
    Param(
            $siteAdminUrl,
            $siteColUrl,
            $siteColAdminUser
        )

    Update-SiteCollectionAdministrator -siteAdminUrl $siteAdminUrl -siteColUrl $siteColUrl 
-siteColAdminUser $siteColAdminUser -isSiteColAdmin:$false
}

## Internal Function
Function Update-SiteCollectionAdministrator{
    Param(
            $siteAdminUrl,
            $siteColUrl,
            $siteColAdminUser,
            [bool]
            $isSiteColAdmin
        )

    ## Check Connection
    Try{

        $siteCheck = Get-SPOSite $siteAdminUrl     
    }

    Catch{

        Connect-SPOService -Url $siteAdminUrl
    }


    $updateSiteAdmin = Set-SPOUser -Site $siteColUrl -LoginName $siteColAdminUser 
-IsSiteCollectionAdmin $isSiteColAdmin

    if($updateSiteAdmin){
    
        write-host "$($siteColUrl) \>" -NoNewline -ForegroundColor Gray
        write-host " Is " -NoNewline
        write-host "$($updateSiteAdmin.DisplayName) " -NoNewline -ForegroundColor Green
        write-host "Site Coll Admin?" -NoNewline

        switch($isSiteColAdmin){
        
            $true{    
            
                write-host " $($isSiteColAdmin)." -ForegroundColor Green
            }
        
            $false{

                write-host " $($isSiteColAdmin)." -ForegroundColor Yellow
            }
        }
    }
}


## Example: 

$properties = @{userAccount = "someemailaddress@domain.onmicrosoft.com"
                userOneDrive = "https://$($env).sharepoint.com/sites/OneDriveIssue"}

$user = New-Object PSObject -Property $properties

Add-SiteCollectionAdministrator -siteAdminUrl $config['siteAdminUrl'] 
-siteColUrl $user.userOneDrive -siteColAdminUser $user.userAccount

Disconnect-SPOService


No comments:

Post a Comment