Most recently I received a request from a user that wanted to know what folders are being used and what folders are not. We use Datadvantage for that so I sent him an export of the folders. But there is another way of doing that. You can do a GCI and count the number of slashes (\). You need to count the slashes to know at what level you need to do a Get-ChildItem -recurse. I exported a 3 level export as described in this post. Then at the last level I want to do a CGI -recurse.
In my case it where 9 slashes. This differs per environment. You can count it by entering the following code at the last level
$Folder = "\\Folder\Path" [string]$Test = $Folder [int]$Result = $Test.Split("\").Count Write-Host The number of levels to split on is $Result
If you know when to do a recursive CGI you can change the script below.
$path = "H:\Exports\ExportCGI.csv" $list = import-csv $path $Date = (Get-Date).AddDays(-400) Foreach ($item in $list){[string]$Test = $item.folders [int]$Result = $Test.split("\").count If ($Result -lt "9"){$Result2 =@( gci $Item.Folders | Where {$_.LastWriteTime -gt $Date}); $Result2 = $Result2 | Sort LastWriteTime -Descending ; $OutInfo = $Item.Folders + ";" + $Result2[0].LastWriteTime ; AC -Value $Outinfo -Path "H:\Exports\ExportCGIPlusLastWriteTime.csv"} If ($Result -ge "9"){$Result2 = @(gci $Item.Folders -Recurse | Where {$_.LastWriteTime -gt $Date}); $Result2 = $Result2 | Sort LastWriteTime -Descending ; $OutInfo = $Item.Folders + ";" + $Result2[0].LastWriteTime ; AC -Value $Outinfo -Path "H:\Exports\ExportCGIPlusLastWriteTime.csv"} }
In My case I added a condition to only include the date if there was a file or folder that has been modified in the last 400 days. You may alter this in the way you want.
Have fun!