Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- param (
- [string]$UserName = $( Read-Host "Input UserName, please" ),
- [string]$Password = $( Read-Host "Input password, please" ),
- [string]$SiteUri = $( Read-Host "Input SiteUri, please" ),
- [string]$FromUser = $( Read-Host "Input FromUser, please" ),
- [string]$ToUser = $( Read-Host "Input ToUser, please" )
- )
- $host.Runspace.ThreadOptions = "ReuseThread"
- #Definition of the function that gets all the SharePoint groups and Users per Group in a SharePoint site
- function Clone-SPOUserGroupPermissions
- {
- param ($sSiteColUrl,$Credential,$fromUser,$toUser)
- try
- {
- #SPO Client Object Model Context
- $spCtx = New-Object Microsoft.SharePoint.Client.ClientContext($sSiteColUrl)
- $spCtx.Credentials = $Credential
- #Root Web Site
- $spRootWebSite = $spCtx.Web
- #Collecction of Sites under the Root Web Site
- $spSites = $spRootWebSite.Webs
- #Loading Operations
- $spGroups=$spCtx.Web.SiteGroups
- $spCtx.Load($spGroups)
- $spCtx.ExecuteQuery()
- #We need to iterate through the $spGroups Object in order to get individual Group information
- foreach($spGroup in $spGroups){
- $spCtx.Load($spGroup)
- $spCtx.ExecuteQuery()
- #Getting the users per group in the SPO Site
- $spSiteUsers=$spGroup.Users
- $spCtx.Load($spSiteUsers)
- $spCtx.ExecuteQuery()
- foreach($spUser in $spSiteUsers){
- if ($spUser.Email -eq $fromUser)
- {
- Write-Host $spGroup.Title "," $spUser.Email
- Add-SPUsersToGroup -sSiteColUrl $sSiteColUrl -Credential $Credential -sGroup $spGroup.Title -sUserToAdd $toUser
- }
- }
- }
- $spCtx.Dispose()
- }
- catch [System.Exception]
- {
- write-host -f red $_.Exception.ToString()
- }
- }
- function Add-SPUsersToGroup
- {
- param ($sSiteColUrl,$Credential,$sGroup,$sUserToAdd)
- try
- {
- Write-Host "Adding User $sUserToAdd to group $sGroup in $sSiteColUrl" -foregroundcolor Green
- #SPO Client Object Model Context
- $spCtx = New-Object Microsoft.SharePoint.Client.ClientContext($sSiteColUrl)
- $spCtx.Credentials = $Credential
- #Getting the SharePoint Groups for the site
- $spGroups=$spCtx.Web.SiteGroups
- $spCtx.Load($spGroups)
- #Getting the specific SharePoint Group where we want to add the user
- $spGroup=$spGroups.GetByName($sGroup);
- $spCtx.Load($spGroup)
- #Ensuring the user we want to add exists
- #Write-Host " Buscando -> " $sUserToAdd
- $spUser = $spCtx.Web.EnsureUser($sUserToAdd)
- $spCtx.Load($spUser)
- $spUserToAdd=$spGroup.Users.AddUser($spUser)
- $spCtx.Load($spUserToAdd)
- $spCtx.ExecuteQuery()
- Write-Host "SharePoint User $sUserToAdd added succesfully!!" -foregroundcolor Green
- $spCtx.Dispose()
- }
- catch [System.Exception]
- {
- write-host -f red $_.Exception.ToString()
- }
- }
- $SecurePassword = $Password | ConvertTo-SecureString -AsPlainText -Force
- $SPOCredentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($UserName, $SecurePassword)
- Clone-SPOUserGroupPermissions -sSiteColUrl $SiteUri -Credential $SPOCredentials -fromUser $FromUser -toUser $ToUser
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement