Solved

get acl and dir commands

Posted on 2014-02-12
6
386 Views
Last Modified: 2014-02-18
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
Comment
Question by:pma111
  • 2
  • 2
6 Comments
 
LVL 68

Accepted Solution

by:
Qlemo earned 250 total points
ID: 39852672
Something like this?
dir C:\temp\ee,c:\temp  | ? { $_.PsIsContainer } | get-acl 

Open in new window

0
 
LVL 3

Author Comment

by:pma111
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 68

Expert Comment

by:Qlemo
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

by:Tommy_Cooper
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

Open in new window

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

by:pma111
ID: 39852876
makes sense, thanks both..
0

Featured Post

Enabling OSINT in Activity Based Intelligence

Activity based intelligence (ABI) requires access to all available sources of data. Recorded Future allows analysts to observe structured data on the open, deep, and dark web.

Join & Write a Comment

Why would I want to create a function for tracking messages? I am glad you asked. As with most monotonous/routine tasks, human error tends to creep in after doing the same task over and over again. By creating a function, you load the function once…
This is a PowerShell web interface I use to manage some task as a network administrator. Clicking an action button on the left frame will display a form in the middle frame to input some data in textboxes, process this data in PowerShell and display…
Excel styles will make formatting consistent and let you apply and change formatting faster. In this tutorial, you'll learn how to use Excel's built-in styles, how to modify styles, and how to create your own. You'll also learn how to use your custo…
Get a first impression of how PRTG looks and learn how it works.   This video is a short introduction to PRTG, as an initial overview or as a quick start for new PRTG users.

760 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

20 Experts available now in Live!

Get 1:1 Help Now