[英]Grant permissions to folder in Sharepoint library using Powershell?
我有一个Sharepoint库,我有一个Powershell脚本将文件放入其中进行处理。 Powershell脚本可以访问Active Directory,并返回组成员身份信息。 然后,脚本使用组所有者的名称在我的媒体库中为组所有者创建一个文件夹(如果不存在),并将特定组中包含的所有用户的.CSV拖放到该文件夹中。
这里需要的是只授予组所有者的“读取”权限,这将是我们正在使用的文件夹的名称。理想情况下,该文件夹将被隐藏,但是我知道使用Sharepoint时存在一些限制。
例如:
John Doe,用户:jdoe将能够访问Z:/jdoe/IT.csv,但不能访问Z:/someuser/HR.csv
我目前将Sharepoint库映射到Z:/,以使我的生活更轻松。
我执行了get-command Module Microsoft.SharePoint.PowerShell | ft name
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
朝正确的方向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
我最终意识到,如果我使用Powershell将信息获取到.CSV,然后最终获取到Sharepoint,那么实际上浪费时间与文件并通过Powershell直接利用Sharepoint是没有意义的。
这是我用来完成此操作的代码: http : //pastebin.com/xRyvXLCB
特别感谢@TheMadTechnician
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.