This code snippet would be helpfull when you try to add a user as site collection administrator to multiple sites. The list of sites that needs to be processed can be passed via text file as input.
Code Snippet
Start-Transcript # URL for your organization's SPO admin service $AdminURI = "TENANT ADMIN URL" # User account for an Office 365 global admin in your organization $AdminAccount = "TENANT USER ID" # Compliance manager to be made site collection admin on each MySite $eDiscoveryUser = "USER NAME" # URL for your tenant's MySite domain $MySitePrefix = "https://your organization name-my.sharepoint.com" # Where should we read the list of MySites? # This file should contain partial MySite paths formatted as follows, one per line; for example # /personal/junminh_contoso_onmicrosoft_com/ $MySiteListFile = 'C:UsersyouraliasDesktopListOfMysites.txt' # Begin by connecting to the service Connect-SPOService -Url $AdminURI -Credential $AdminAccount # Make a reader for our list of MySites $reader = [System.IO.File]::OpenText($MySiteListFile) try { for(;;) { # Read a line $line = $reader.ReadLine() # Stop if it doesn't exist if ($line -eq $null) { break } # Turn the line into a complete SharePoint site path by merging $MySitePrefix # Formatted like this: "https://contoso-my.sharepoint.com" # ...with each partial MySite path in the file, formatted like this: # "/personal/junminh_contoso_onmicrosoft_com/" $fullsitepath = "$MySitePrefix$line" Write-Host "Operating on $fullsitepath " # We need to remove the last "/" to work around an issue. # "/personal/junminh_contoso_onmicrosoft_com/" # becomes "/personal/junminh_contoso_onmicrosoft_com" $fullsitepath = $fullsitepath.trimend("/") # Make the specified eDiscovery user a site collection admin on the OneDrive for Business site Write-Host "Making $eDiscoveryUser a Site Collection Admin" Set-SPOUser -Site $fullsitepath -LoginName $eDiscoveryUser -IsSiteCollectionAdmin $true } } finally { $reader.Close() } Write-Host "Done!" Stop-Transcript Write-Host "Log written."
Leave a comment