我有一個Sharepoint庫,我有一個Powershell腳本將文件放入進行處理。 Powershell腳本與Active Directory聯繫並返回組成員身份信息。然後,腳本使用組所有者的名稱爲我的庫中的組所有者(如果它不存在)創建一個文件夾,並將包含在特定組中的所有用戶的.CSV刪除到該文件夾中。使用Powershell在Sharepoint庫中授予文件夾權限?
這裏需要的是授予只讀組的所有者的'讀'權限,這將是我們正在工作的文件夾的名稱。理想情況下,文件夾將被隱藏,但我知道有限制在使用Sharepoint時。
例如:
李四,用戶:JDOE將能夠訪問Z:/jdoe/IT.csv但不 Z:/someuser/HR.csv
我讓我的Sharepoint Library映射到Z:/目前,讓我的生活更輕鬆。
我執行了get-command Module Microsoft.SharePoint.PowerShell | ft name
並且跑過了Sharepoint命令列表。
然後,我偶然發現Grant-SPObjectSecurity Cmdlet
,我認爲這是我想在Powershell方面使用的,當文件夾被創建時,將Sharepoint權限僅應用於爲其創建文件夾的用戶。
從開始到結束的過程是:Powershell腳本'Get_Group_Members'執行,讀取每行包含一個Active Directory組名稱的文本文件。對於找到的每個組,該腳本標識組的所有者,創建一個以所有者AD名稱命名的文件夾,並將.CSV文件放入列出該組所有成員的文件夾中。然後,我(現在無論如何)都手動啓動下一個腳本'Import_CSV',它將所有信息都拖入Sharepoint列表中,供無關進程使用。
希望能幫助你理解正在發生的事情。我是否認爲我應該在Powershell方面處理此問題,而不是Sharepoint方面?如果是這樣,我是否正朝着Grant -SPObjectSecurity
邁進?
謝謝!
更新:
繼我在下面留言中提供的鏈接,這裏是我想出了:
function GrantUserpermission($strOwnerName)
{
[Microsoft.SharePoint.SPUserCollection]$spusers=[Microsoft.SharePoint.SPUserCollection]$web.SiteUsers
[Microsoft.SharePoint.SPUser]$spuser=$spusers[$strOwnerName]
"Strowner name: " + $strOwnerName
# Get the SPWeb object and save it to a variable
$web = Get-SPWeb -identity $WebURL
if ($strOwnerName -ne $null)
{
$sproleass=new-object Microsoft.SharePoint.SPRoleAssignment([Microsoft.SharePoint.SPPrincipal]$spuser)
$folder.BreakRoleInheritance("true")
$sproleass.RoleDefinitionBindings.Add($web.RoleDefinitions["Contribute"])
$folder.RoleAssignments.Add($sproleass);
Write-Host "Permission provided for user ", $strOwnerName
}
else
{
Write-Host "User ""$userName"" was not found in this web!"
}
}
而在這裏,是個錯誤與我的代碼相關聯:
的完整代碼可以在這裏找到:http://pastebin.com/iBpj6V1U
更新#2
#apply permissions to folder
"Strowner name: " + $strOwnerName
function GrantUserpermission($strOwnerName)
{
$web = Get-SPWeb -identity $WebURL
[Microsoft.SharePoint.SPUser]$spuser=$web.EnsureUser($strOwnerName)
"Strowner name in Function: " + $strOwnerName
更新代碼#2:http://pastebin.com/DzP1hVce
[此鏈接](http://social.msdn.microsoft.com/Forums/sharepoint/en- US/31fcaf17-6f7d-43ae-b3f2-bc5694493d1b/set-permission-to-document-library-folder-using-powershell?forum = sharepointdevelopmentprevious)強調了一種快速的方式來完成類似於我所要求的操作,但是使用命令'RoleDefinitionBindings.Add',我不確定適用於我的場景。任何見解? – MrS1ck
提供的鏈接提出瞭如何授予文件夾權限的正確解決方案。你嘗試過嗎?你有任何錯誤? –
@ Yevgeniy.Chernobrivets我已經更新了我的問題,並提供了從提供的鏈接中修改的代碼,以及隨附的錯誤。 – MrS1ck