Quantcast
Channel: Windows PowerShell Forum
Viewing all articles
Browse latest Browse all 2314

SharePoint Einladungen CSOM in Gruppe

$
0
0

Hallo Zusammen,

ich habe das untenstehende Skript. Es ermöglicht es via SharePoint Online Einladungen an externe User zu verschicken.

Auf der Weboberfläche ist es möglich, diese externen User direkt einer Berechtigungsgruppe zuzuordnen. Mit dem Skript sind aber nur rudimentäre Berechtigungen (View, Edit, Owner) möglich. Weiss jemand, wie man diese direkt den Berechtigungsgruppe zuweist?

Falls schon jemand fragen möchte: Nein, es ist nicht möglich den Benutzer am Ende einfach mit Add-SPOUser der Gruppe zuzuordnen, da es sich erstmal nur um eine Einladung handelt, und noch nicht um einen registrieren Benutzer.

Function Add-SharePointSiteExternalUser {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory=$true)]
        [ValidateScript({[system.uri]::IsWellFormedUriString($_,[System.UriKind]::Absolute)})]
        [string]$SiteURL,
        [Parameter(Mandatory=$true)]
        [ValidateNotNull()]
        [System.Management.Automation.PSCredential]$Credential,
        [Parameter(Mandatory=$true,ValueFromPipeline=$True)]
        [net.mail.mailaddress[]]$User,
        [Parameter(Mandatory=$true)]
        [ValidateSet("None","View","Edit","Owner")]
        [string]$Permission,
        [Parameter(Mandatory=$false)]
        [string]$Message = $null,
        [Parameter(Mandatory=$false)]
        [switch]$SendNotificationEmail = $true

    )
    begin{
        $StatusOK = $True
        Write-Verbose "Initializing SharePoint Client Libraries"
        try{
            $loadInfo1 = [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client")
            $loadInfo2 = [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client.Runtime")
        }
        catch{
            Write-Error "Failed to load SharePoint Client Libraries."
            $StatusOK = $False
            break
        }
        Write-Verbose "Initializing SharePoint context object."
        try{
            $ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
            $SharePointCreds = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Credential.UserName, $Credential.Password)
            $ctx.Credentials = $SharePointCreds
            $SharingManager = [Microsoft.SharePoint.Client.Sharing.WebSharingManager]
        }
        catch{
            Write-Error "Failed to initialize SharePoint context object. Ensure you have the correct permissions on the sharepoint site."
            $StatusOK = $False
            break
        }
        switch ($Permission){"View" {$SetPermission = [Microsoft.SharePoint.Client.Sharing.Role]::View}"Edit" {$SetPermission = [Microsoft.SharePoint.Client.Sharing.Role]::Edit}"Owner"{$SetPermission = [Microsoft.SharePoint.Client.Sharing.Role]::Owner}
        }
    }
    process{
        if(!$StatusOK){return}
        $User | ForEach-Object {
            $CurUser = $_.Address.ToString()
            Write-Host "Granting '$CurUser' '$Permission' access to '$SiteURL'."
            $userList = New-Object "System.Collections.Generic.List``1[Microsoft.SharePoint.Client.Sharing.UserRoleAssignment]"
            $userRoleAssignment = New-Object Microsoft.SharePoint.Client.Sharing.UserRoleAssignment
            $userRoleAssignment.UserId = $CurUser
            $userRoleAssignment.Role = $SetPermission

            $userList.Add($userRoleAssignment)
            try{
                $res = $SharingManager::UpdateWebSharingInformation($ctx, $ctx.Web, $userList, $SendNotificationEmail, $message, $true, $true)
                $ctx.ExecuteQuery()
                $Success = $res.Status
                $StatusMessage = $res.message
                $InvitationLink = $res.InvitationLink
            }
            catch{
                write-error "Error granting '$CurUser' '$Permission' access to '$SiteURL'."
                $Success = $False
                $StatusMessage = "Error granting '$CurUser' '$Permission' access to '$SiteURL'."
            }
            $ObjProperties = @{
                SiteURL = $SiteURL
                Permission = $Permission
                User = $CurUser
                Success = $Success
                StatusMessage = $StatusMessage
            }
            $OutObj = new-object psobject -Property $ObjProperties
            Write-Output $OutObj

        }
    }
}

$Users = "test@contoso.com"
$Message = "Hallo! Dies ist meine Einladung"
$SPSite = "https://tenant.sharepoint.com"
Add-SharePointSiteExternalUser -SiteURL $SPSite -Credential $Credential -User $Users -Permission View -Message $Message -SendNotificationEmail:$true



Viewing all articles
Browse latest Browse all 2314


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>