Итак, у меня есть множество сводных таблиц, которые я загружаю каждый день в такие папки, как:
Pivot0001
Pivot0002
Pivot0003
и т. Д.
У меня также есть группы пользователей под названием Pivot0001 и т. Д. С пользователями, которым требуется доступ к этой папке в ней. Что мне теперь нужно сделать, это установить разрешения для каждой папки (у меня их 400 или около того). Я знаю, что мне нужно сделать цикл и установить разрешения. То, что я не знаю, как сделать, это получить список всех папок и затем установить разрешения для этой папки.
EDIT
Я забыл сказать, что это для SharePoint ... извините за это
Вот окончательный код, который работал (не совсем чистый, но работает)
[Void][System.Diagnostics.Stopwatch] $sw;
$sw = New-Object System.Diagnostics.StopWatch;
$sw.Stop();
$sw.Start();
clear
$path = "\\path\to\webdav\"
$dirs = Get-ChildItem $path -Recurse | Where-Object { $_.Attributes -band [System.IO.FileAttributes]::Directory }
[Void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint");
$SPSite = New-Object Microsoft.SharePoint.SPSite("http://sharepoint");
$OpenWeb = $SpSite.OpenWeb("/Downloads");
[int]$i = 0;
foreach ($dir in $dirs) {
$i++
Write-Host "Setting $dir to $dir" -F Green;
$path = "http://sharepoint/Downloads/" + $dir;
$TheNewGroup = $OpenWeb.GetFolder($path);
[Microsoft.SharePoint.SPFolder]$folder = $OpenWeb.GetFolder($path);
[Microsoft.SharePoint.SPGroupCollection]$spc = $OpenWeb.SiteGroups;
[Microsoft.SharePoint.SPGroup]$group = $spc[$dir];
[Microsoft.SharePoint.SProleAssignment]`
$roleAssignment = New-Object Microsoft.SharePoint.SPRoleAssignment([Microsoft.SharePoint.SPPrincipal]$group);
$OpenWeb.GetFolder($path).Item.BreakRoleInheritance("true");
$roleAssignment.RoleDefinitionBindings.Add($OpenWeb.RoleDefinitions["Read"]);
$OpenWeb.GetFolder($path).Item.RoleAssignments.Add($roleAssignment);
}
Write-Host "found $i Folders" -F Green
$SPSite.Dispose();
$sw.Stop();
$howlong = $sw.Elapsed.ToString();
write-host "Took: " $howlong -f Green;