none
SharePoint Online におけるPowershellについて RRS feed

  • 質問

  • 実施しようとしていることはSharePoint Online のサイトにあるライブラリの権限の継承を切り、[testgroup]グループの権限を変更するスクリプトになります。

    この時に、ライブラリの権限の継承を切るところまではできているのですが、権限変更の「$roleAssignment.RoleDefinitionBindings.Add($roleDefinition)」の部分でエラーが出てしまい、どこの部分が間違っているのかがわからず、初歩的な質問かと思いますが解決方法をご教示いただければと思います。

    #SharePoint Client SDKの読み込み
    Add-Type -Path "C:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll"
    Add-Type -Path "C:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
    
    #コンテキストの作成
    $siteUrl = Read-Host "接続先のサイトのURLを入力してください。"
    $ctx = New-Object Microsoft.SharePoint.Client.ClientContext($siteUrl)
    
    #接続アカウント(管理者)の設定
    $password = Read-Host -Prompt "管理者アカウントのパスワードを入力してください" -AsSecureString
    $credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials("adminuser@domainname.onmicrosoft.com", $password)
    $ctx.Credentials = $credentials
    
    #ライブラリの権限の継承削除
    $list = $ctx.Web.Lists.GetByTitle("ドキュメント")
    $list.BreakRoleInheritance($true,$true)
    $ctx.load($list)
    $ctx.ExecuteQuery()
    $list.Update()
    
    #グループに対する権限変更
    $Group = $ctx.Web.SiteGroups.GetByname("testgroup")
    $roleDefinition = $ctx.Site.RootWeb.RoleDefinitions.GetByName["投稿"]
    $roleAssignment = new-object  Microsoft.SharePoint.Client.RoleAssignment($ctx,$roleDefinition)
    $roleAssignment.RoleDefinitionBindings.Add($roleDefinition)
    $list.RoleAssignments.Add($roleAssignment)
    $ctx.ExecuteQuery()
    $list.Update()
    
    よろしくお願いいたします。

    2015年3月10日 9:16

回答

  • やりたいのは、「testgroup」SharePoint グループに、「投稿」権限 (アクセス許可レベル) を追加するということでしょうかね。

    #グループに対する権限変更 のコメントを以下を、以下のようにすれば動くと思います。

    #グループに対する権限変更
    $group = $web.SiteGroups.GetByname("testgroup")
    $ctx.Load($group)
    $ctx.ExecuteQuery()

    $roleDefinition = $ctx.Site.RootWeb.RoleDefinitions.GetByName("投稿")
    $ctx.Load($roleDefinition)
    $ctx.ExecuteQuery()

    $rdb = New-Object Microsoft.SharePoint.Client.RoleDefinitionBindingCollection($ctx)
    $rdb.Add($roleDefinition)
    $ra = $list.RoleAssignments.Add($group, $rdb)
    $ctx.ExecuteQuery()


    Kokuho Hi (Sonorite / SharePoint Technology Center / SSS)

    • 回答の候補に設定 星 睦美 2015年3月18日 4:29
    • 回答としてマーク 星 睦美 2015年3月20日 4:28
    2015年3月15日 14:18