Last active
February 14, 2018 20:50
-
-
Save artokai/6c79ec4169eb35ba111c80aac0b5ec81 to your computer and use it in GitHub Desktop.
PowerShell script which processes an Azure AD B2B invitation CSV file (augmented with an `SPGroups` fields) and grants access permissions to SharePoint Online accordingly.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[CmdletBinding()] | |
Param( | |
[Parameter(Mandatory=$True)] | |
[string]$CSVFilename, | |
[Parameter(Mandatory=$True)] | |
[string]$SiteUrl, | |
[Parameter()] | |
$Credentials | |
) | |
function AddB2BUsersToSite() { | |
# Check that the CSV file exists | |
if (-not (Test-Path $CSVFilename)) { | |
Write-Error "Could not find CSV-file. Please check the path and try again." | |
return | |
} | |
# Prompt for credentials (if not passed in as parameter) | |
if (-not $Credentials) { | |
Write-Verbose "Credentials not supplied, prompting for them." | |
$Credentials = Get-Credential -Message "Login to $siteUrl" | |
} | |
# Connect to SPOnline | |
try { | |
Write-Debug "Connecting to SharePoint" | |
Connect-SPOnline -Url $SiteUrl -Credentials $Credentials | |
$web = Get-SPOWeb | |
} catch { | |
Write-Error "Could not connect to $siteUrl. Please check the provided url and credentials and try again." | |
return | |
} | |
# Open the CSV-file | |
Write-Debug "Opening CSV file" | |
$csv = Import-Csv -Delimiter "," $CSVFilename | |
# Loop through all users | |
$csv | ForEach-Object { | |
$row = $_ | |
$loginName = $row.Email | |
$spgroups = $row.SPGroups | |
# Add the user to the hidden user information list | |
# This will also make the user appear in the PeoplePicker dialog | |
Write-Output "Adding $loginName to site" | |
Write-Debug "Ensuring that user is present" | |
$user = $web.EnsureUser($loginName) | |
$web.Context.ExecuteQuery() | |
# Add the user to the specified groups | |
Write-Verbose "Adding user to groups" | |
if ($spgroups) { | |
$spgroups -split '\+' | ForEach-Object { | |
$groupName = $_.Trim() | |
Write-Verbose "- Adding user to group: $groupName" | |
Add-SPOUserToGroup -identity $groupName -LoginName $loginName | |
} | |
} | |
} | |
} | |
# Main | |
try { | |
AddB2BUsersToSite | |
} finally { | |
try {Disconnect-SPOnline -ErrorAction SilentlyContinue } catch {} | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment