User powershell to get a list of all folders in /downloads/pivots

how to get a list of all files in a folder and subfolders into excel using cmd
how to get a list of all files in a folder and subfolders into excel vba
export folder and subfolder list to excel 2010
powershell list all files in directory and subdirectories
list folder contents
excel list all files in a folder
how to create a text file list of the contents of a folder
how to get a list of files in a folder into excel

So I have a boat load of pivot tables that I upload everyday to folders like: Pivot0001 Pivot0002 Pivot0003

and so on.

I also have user groups called Pivot0001 and so on with users that need to access that folder in it. What I now need to do is set the permissions on each folder (I have 400 or so of them). I know I need to do a loop and set permissions. What I dont know how to do is get a list of all the folders and then set permissions to that folder.

EDIT I forgot to say this is for SharePoint...sorry about that

Here is the final code that worked (not really clean but it works)

[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;

Something like this should work:

$domain = "YOURDOMAIN"
$path = "C:\Your\Folder\Path"

$dirs = Get-ChildItem $path | Where-Object { $_.Attributes -band [System.IO.FileAttributes]::Directory }
foreach ($dir in $dirs)
{
    $acl = Get-Acl $dir.FullName
    $user = $domain + "\" + $dir.Name
    $permission = $user, "FullControl", "Allow"
    $rule = New-Object System.Security.AccessControl.FileSystemAccessRule $permission
    $acl.SetAccessRule($rule)
    $acl | Set-Acl $dir.FullName
}

The above works for a normal local file system path, but SharePoint has a different folder security model. I found a blog post by Robert Gruen that explains how to programmatically set permissions. He gives this C# code sample:

// get a reference to the folder (this assumes path points to a valid folder)
SPFolder folder = SharePointConfiguration.Site.GetFolder(path);

// get a reference to the Sharepoint group collection
SPGroupCollection spc = SharePointConfiguration.Site.SiteGroups;

// get a reference to the group who’s permissions you want to modify for the folder above
SPGroup group = spc[groupName];

// create a role assignment from the group reference
SPRoleAssignment roleAssignment = new SPRoleAssignment((SPPrincipal)group);

// break role inheritance for folders/files because they will be having permissions separate from their parent file/folder
folder.Item.BreakRoleInheritance(true);

// update the role assignments for the group by adding the permissionSet "TestPermissionLevel" which is a custom
// permissionset I created manually... you can easily use any of the built-in permission sets
roleAssignment.RoleDefinitionBindings.Add(SharePointConfiguration.Site.RoleDefinitions["Test Permission Level"]);

// apply the new roleassignment to the folder.  You can do this at the listitem level if desired (i.e. this could be SPfile.Item.... instead of SPFolder.Item)
folder.Item.RoleAssignments.Add(roleAssignment);

I'm sure with a bit of translation, this could be adapted to PowerShell.

Get-ChildItem, How do I get a list of files in a directory and subfolders in Excel? Listing files in folders and subfolders with PowerShell. When it comes to working with files and folders and recursing through a nested directory structure, it is almost an unfair competition between Windows PowerShell and VBScript. It is almost like the Windows PowerShell team deliberately made it easy to work with files and folders.

Getting a list of folders isn't exactly straightforward, but easily understandable:

Get-ChildItem \downloads\pivots | Where-Object { $_.PSIsContainer }

You can then pipe that further into the ForEach-Object cmdlet where you can set the permissions:

Get-ChildItem \downloads\pivots |
Where-Object { $_.PSIsContainer } |
ForEach-Object {
    $_.SetAccessControl( ... )
}

User powershell to get a list of all folders in /downloads/pivots, How do I get a list of files in a directory in PowerShell? If you wish to get a list of all users from your active directory. You can do this with 1 simple powershell command. You need to run this in Active Directory Module for Windows Powershell on one of your DC’s. This will export the list of users and all their detail.

OK, figured out what I was missing, here is my code:

The key is to provide the complete URL path to the Folder to check for.

if((Get-PSSnapin "Microsoft.SharePoint.PowerShell" -ErrorAction SilentlyContinue) -ne $null)
{
    Add-PSSnapin Microsoft.SharePoint.PowerShell
}

function go
{
    $Source = "http://portal.jedi.local"
    $SDL = "Test Document"
    $Site = Get-SPSite $Source
    $Web = Get-SPWeb $Site.URL
    $Lists = $Web.Lists[$SDL]
    $DocFolder = "Add New Folder Tomorrow"
    $FolderPath = [String]::Format("{0}/{1}/{2}",$Site.URL, $SDL, $DocFolder)
    [Hashtable]$docSetProperties = @{}
    $Folders = $Web.GetFolder($FolderPath)        
    $ContentType = $Lists.ContentTypes["infoCloud Set"]
    if(!$Folders.Exists)
    {
        Write-Host "true"
        $docSet = [Microsoft.Office.DocumentManagement.DocumentSets.DocumentSet]::Create ($Lists.RootFolder, $DocFolder, $ContentType.Id, $docSetProperties) 
    }
    else
    {
        Write-Host "false"
    }
}
go 

Get a List of File Names from Folders & Sub-folders (using Power , User powershell to get a list of all folders in /downloads/pivots. Multi tool use. up vote 0 down vote favorite. So I have a boat load of pivot tables  PowerShell – List only Files or Folders by Recursively March 16, 2020 June 13, 2015 by Morgan We can retrieve only list of Files or Folders by Recursively using the Powershell cmdlet Get-ChildItem .

List Files in Folders and Subfolders with PowerShell, main folder. But you can do this using Power Query ('Get & Transform' if you're using Excel 2016 or later versions). Make sure you are downloading 32-bit if your Excel is 32-bit and 64 bit if your Excel is 64 bit. Install the Here are the steps to get a list of all the file names from a folder: Go to the Creating a Pivot Table. All is revealed by get-member. # PowerShell script to list the DLL files under the system32 folder $Dir = get-childitem C:\windows\system32 -recurse $Dir |get-member # $List = $Dir | where {$_.extension -eq ".dll"} # $List |ft fullname |out-file C:\scripts\dll.txt # List | format-table name.

PowerShell to Find Where Your Active Directory Groups Are Used , This continues until all the files in all the nested folders are displayed. Image of command output. If I use the –File parameter, I do not get the initial  Summary: Learn how to use Windows PowerShell to find folders with names that match a specific pattern. How can I use Windows PowerShell to find the path to folders that have names that match a specific pattern? Use the Get-ChildItem cmdlet and the –Filter parameter with a pattern that matches the name, and then specify the –Directory parameter.

Hands-On Full Stack Development with Spring Boot 2 and React: , Download today's script from the TechNet Script Gallery. ACEs – An exhaustive list of every user or group explicitly assigned permissions at Groups not used in NTFS permissions; Pivot table (cross tab) report of groups  A folder in my Hard disk has about 300 movies and I want to share this list of movie names with my friend, or I want to compare my list with one of my friend's collection of movies on his hard disk using PowerShell.

Comments
  • I forgot to say this is for SharePoint...sorry about that..thought I will try this with UNC to see if that works
  • It should work as long as the user you run the script as has permission to the remote path.
  • Everything works except the point where it tries to assign the permissions. Sharepoint does it a different way as it is more webdav and usually has its own calls to do that sort of thing
  • msdn.microsoft.com/en-us/library/… I have a bad feeling that there is no way to programaticly set permission on a folder
  • This might be what you're looking for: blogs.msdn.com/robgruen/archive/2007/11/15/…
  • Your method is cleaner however bobby's was more complete :)