PSScriptTools icon indicating copy to clipboard operation
PSScriptTools copied to clipboard

[Bug]: get-foldersize and user profile files

Open jszabo98 opened this issue 1 year ago • 8 comments

Describe the problem

get-foldersize doesn't seem to return the correct size for user profiles, maybe because of things like symlinks? It is fast though.

Expectation

No response

Additional Information

No response

PowerShell version

4.0

Platform

None

Additional Checks

  • [X] You are using the latest version of this module.
  • [ ] You have read this repository's README file.
  • [ ] You have read full help and examples for the command you are having problems with.
  • [ ] You are running PowerShell in an elevated session.
  • [ ] You are running in a traditional PowerShell console or Windows Terminal

jszabo98 avatar Feb 12 '24 17:02 jszabo98

What version of PowerShell are you using? What path are you querying? Are you including hidden files?

jdhitsolutions avatar Feb 12 '24 19:02 jdhitsolutions

Powershell 5.1. c:\users. Including hidden files.

jszabo98 avatar Feb 12 '24 21:02 jszabo98

You'll probably get access-denied messages for parts of that path, even if running as Admin. I did a test on my profile in Windows PowerShell.

Get-FolderSizeInfo $home -hidden

My total size is actually about 3GB more than what I get when I use Windows Explorer and look at properties. The same test in PowerShell 7 is closer to the results I see in Windows Explorer. This is on a Windows 11 system. Profile folders are tricky due to hidden files and special access permissions.

Although, there might be an issue with symlinks. In Windows PowerShell, the function follows the link and includes the size information, but not in PowerShell 7, which uses a different .NET method.

jdhitsolutions avatar Feb 12 '24 21:02 jdhitsolutions

This suits me, to skip the reparsepoints like the mounted Onedrive ...

$top = ($di.GetDirectories()).Where( { $_.attributes -notmatch 'reparsepoint' })

jszabo98 avatar Feb 15 '24 20:02 jszabo98

Let me see what I can come up with.

jdhitsolutions avatar Feb 15 '24 23:02 jdhitsolutions

I have a new version for the next release. I am now skipping all reparse points and junctions.

jdhitsolutions avatar May 30 '24 21:05 jdhitsolutions

v2.49.0 has been published to the PowerShell Gallery if you want to update and test.

jdhitsolutions avatar Jun 06 '24 17:06 jdhitsolutions

Looks good. Actually my typical usage is like this, sort of "du | sort -n". It's good for avd, where the disk is slower.

icm comp001 { dir -dir -force C:\programdata\ | Get-FolderSizeInfo.ps1 | sort totalsize } | ft -a

jszabo98 avatar Jun 11 '24 14:06 jszabo98