Solved

Get-ChildItem of Share

Posted on 2013-01-08
6
395 Views
Last Modified: 2013-01-15
I am wanting to input a username into a script and have an output showing any files they own in order of size. I currently have the (very basic) script below. I can see the specific files a user owns but I can't figure out how to get it to list by size.

$User = read-host "Enter a pin number"
$Directory="E:\Data\"

Get-ChildItem $Directory -recurse -file | Get-Acl | where {$_.Owner -match $user}

Open in new window


My ultimate goal is to use this script to email users that exceed a certain quota percentage with a list of their largest files. Any help would be greatly appreciated!
0
Comment
Question by:Joseph Moody
6 Comments
 
LVL 11

Assisted Solution

by:X_layer
X_layer earned 100 total points
ID: 38756693
You can try to achive this with sort-object:
Get-ChildItem $Directory -recurse -file | Get-Acl | where {$_.Owner -match $user} | Sort-Object length -descending

Open in new window

0
 
LVL 11

Assisted Solution

by:netballi
netballi earned 100 total points
ID: 38756715
Try this,

Get-ChildItem $Directory -recurse -file | Get-Acl | where {$_.Owner -match $user} | sort-Object -property length -Descending
0
 
LVL 40

Accepted Solution

by:
Subsun earned 300 total points
ID: 38756790
Try the following code.. you may select the required property of the file using Select-Object
$User = read-host "Enter a pin number"
$Directory="E:\Data\"
Get-ChildItem $Directory -recurse -file | ? {$($_ | Get-Acl).Owner -match $user} | Select-Object *

Open in new window

0
Efficient way to get backups off site to Azure

This user guide provides instructions on how to deploy and configure both a StoneFly Scale Out NAS Enterprise Cloud Drive virtual machine and Veeam Cloud Connect in the Microsoft Azure Cloud.

 
LVL 22

Author Comment

by:Joseph Moody
ID: 38759455
Thank you for helping me get further!! I now have this:

 
$Users = Get-EventLog -ComputerName DataServer.TEST.local -LogName System -Source ntfs -username GCBE\* | Select-Object Username
$Directory="E:\Data"

Foreach ($User in $Users) {
Get-ChildItem $Directory -recurse -file | ? {$($_ | Get-Acl).Owner -match $user.trimstart("Test\")} | Select-Object Fullname,Length | Sort-Object length -Descending}

Open in new window


I am trying to get it to take each username pulled from the event log and have it give me a list of their largest files. It seems to fail because .Owner doesn't work if the username is prefixed by the domain name.

I tried using trimstart to remove the domain name but I am over my head! If I remove trimstart, my error is :

parsing "@{UserName=Test\User1}" - Unrecognized escape sequence \8.
At P:\Script Explorer\Scripts\Get User Quota\Get User Quota.ps1:5 char:48
+ Get-ChildItem $Directory -recurse -file | ? {$($_ | Get-Acl).Owner -match $user} ...
+                                                ~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [], ArgumentException
    + FullyQualifiedErrorId : System.ArgumentException

 Any suggestions?
0
 
LVL 40

Assisted Solution

by:Subsun
Subsun earned 300 total points
ID: 38759629
Try with..
$user.UserName.trimstart("Test\")
0
 
LVL 22

Author Closing Comment

by:Joseph Moody
ID: 38778593
Thank you all for the help! I am still working through the final solution and may open another question or two.
0

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Question has a verified solution.

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

New Windows 7 Installations take days for Windows-Updates to show up and install. This can easily be fixed. I have finally decided to write an article because this seems to get asked several times a day lately. This Article and the Links apply to…
This script can help you clean up your user profile database by comparing profiles to Active Directory users in a particular OU, and removing the profiles that don't match.
This tutorial will walk an individual through locating and launching the BEUtility application to properly change the service account username and\or password in situation where it may be necessary or where the password has been inadvertently change…
To efficiently enable the rotation of USB drives for backups, storage pools need to be created. This way no matter which USB drive is installed, the backups will successfully write without any administrative intervention. Multiple USB devices need t…

829 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