Question

I want to out put folder name, lastwritetime and folder size, how can i combine both of the results in to one line?

For folder name and lastwritetime:

get-item "\\server-01\Y$\Server1" | select name,lastwritetime

For folder size:

$folder = (Get-ChildItem "\\server-01\Y$\Server1" -recurse | Measure-Object -property length -sum)
$size = "{0:N2}" -f ($folder.sum / 1024MB) + " GB"

I need output format like this:

Name       LastWriteTime       Size
Server1    2014-05-05          55G

Also how to make a loop of running this function through a list of PCs?

Any idea please?

Was it helpful?

Solution 2

Select-Object will be your friend here:

foreach ($c in (get-content .\Servers.txt)) { Get-Childitem \\$c\y$\mydirectory | select-object @{l="Name" ; e = {$c}},Lastwritetime,@{l="Size" ; e={(Get-childitem -recurse | measure-object length -sum).sum}} }

But you could also do yourself a favor and add a function like get-foldersize to your profile or to a standard tools module.

http://gallery.technet.microsoft.com/Get-FolderSize-b3d317f5

OTHER TIPS

For Folder name and lastwritetime:

Get-Item $Path | Where-Object { $_.BaseName ,$_.LastWriteTime}

For folder size:

$log="C:\log.txt"

$Path = "C:\Test"
$Items = Get-ChildItem $Path  | Where-Object {$_.PSIsContainer -eq $True} | Sort-Object
foreach ($f in $Items){
   $itemSum = Get-ChildItem ("$Path\" + $f.Name) | Select-Object @{ l="Path" ; e = {$f}},LastWriteTime,@{l="Size" ; e={((Get-childitem -recurse | measure-object length -sum).Sum /1KB)}}

   }

Enjoy!!

FYI

Query Folder tree for Size and export to a log on a server

Here's a true one-liner with some formatting.

Get-ChildItem -Directory -Force|ForEach {"{0,-30} {1,-30} {2:N2}MB" -f $_.Name, $_.LastWriteTime, ((Get-ChildItem $_ -Recurse|Measure-Object  -Property Length -Sum  -ErrorAction Stop).Sum/1MB)}

Result:

enter image description here

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top