Solved

# get acl and dir commands

Posted on 2014-02-12
390 Views
is there an easy way to possibly combine a DIR command and the powershell get-acl command to get a list of acl's for all folders (folders only, no files, or sub directories) in a share.

i.e.\\server\share\dir1 \\server\share\dir2 \\server\share\dir3

or any other way to acheive this within powershell?
0
Question by:pma111
• 2
• 2

LVL 69

Accepted Solution

Qlemo earned 250 total points
ID: 39852672
Something like this?
dir C:\temp\ee,c:\temp  | ? { $_.PsIsContainer } | get-acl  0 LVL 3 Author Comment ID: 39852683 new to powershell, but can you explain what the -psiscontainer switch does, I need the command to automatically list only root level directories, as opposed to hard code them. 0 LVL 69 Expert Comment ID: 39852822 PsIsContainer isn't a switch, it is a property of filesystem objects. If set, the object is a folder, else it is a file. To explain above line, I'll have to dissect it: dir a,b,c,d: you need to use the comma here, because that makes an array, and you need to provide a string array if you want to stuff in more than one folder/file name. dir a b will use the default position resolution for the get-childitem cmdlet (which dir is an alias for), assigning "a" to the first (= path), and "b" to the second (= filter expression = wildcards). | ? {$_.PsIsContainer }   filter to get only folders. ? is where-object, and $_ is "the current object of a pipeline" (you can see that in a lot of commands). The result is then just pushed into get-acl, which knows about how to handle filesystem objects. It could also handle path names as plain string if needed, but passing thru the filesystem object is much more straight-forward if available. 0 LVL 3 Assisted Solution Tommy_Cooper earned 250 total points ID: 39852865 New to Powershell? The biggest thing to remember is that when powershell returns things to you, it is NOT returning just the text you see but it returns entire objects. To see what it is returning use the Get-Member cmdlet. Example - create C:\Temp Then run: Get-ChildItem c:\temp| Get-Member  So you're running the Get-ChildItem command and it returns a powershelll object. Then you're piping that object to Get-Member that will show you all the properties (well, members really. Because it will also contain things like methods and other stuff) that the object contains. As Qelmo said, when you do$_ you are selecting the current object that has been returned and when you add .PsIsContainer you're selecting just that property of the current object.

Does that make sense?
0

LVL 3

Author Comment

ID: 39852876
makes sense, thanks both..
0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

### Suggested Solutions

Microsoft Windows Server Update Service (WSUS) is free for everyone, but it lacks of some desirable features like send an e-mail to the administrator with the status of all computers on the WSUS server. This article is based on my PowerShell script …
Windows 10 came with  a lot of built in applications, Some organisations leave them there, some will control them using GPO's. This Article is useful for those who do not want to have any applications in their image (example:me).
This video shows how to use Hyena, from SystemTools Software, to bulk import 100 user accounts from an external text file. View in 1080p for best video quality.
Email security requires an ever evolving service that stays up to date with counter-evolving threats. The Email Laundry perform Research and Development to ensure their email security service evolves faster than cyber criminals. We apply our Threat…