Question

yh1045 on Tue, 10 Mar 2015 09:16:34


実施しようとしていることは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()
よろしくお願いいたします。


Sponsored



Replies

Kokuho Hi on Sun, 15 Mar 2015 14:18:25


やりたいのは、「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()