我想确定哪些文件/文件类型占用了文件服务器上最多的空间。由于许多用户创建的文件的名称/路径长度超过260个字符,gci不能work.(shortcuts-in-shortcuts-in-shortcuts-infinity)
我的下一步是创建一个变通方法,使用显示、大小、文件名和路径的东西,没有max_path变量的限制。
下面是我的函数:
Function Get-RoboFileSize($source_name){
$filelog=robocopy.exe /e /l /njh /njs /ndl /fp /nc /bytes $source_name $env:Temp
foreach ($item in $filelog){
if ($item -like "*$source_name*"){
$base=$item -Replace "[\s]",""
$Filename=$base -Replace "^[0-9]{1,}",""
$Filesize=$base -Replace "[^\d][a-zA-Z0-9~@#\^\$&\*\(\)-_\+=\[\]\{\}\|\\,\.\?\!\%\§öäüÖÄÜßáàðÞ]{1,}",""
New-Object PSObject -Property @{
Filename=$Filename
FileSize= ("{0:#}" -f($Filesize/1MB))
}
}
}}
这种方法是可行的,但我的问题是它消耗了大量资源。
有没有人知道如何改进这个function....maybe,或者是另一个变通方法?
发布于 2012-10-29 23:53:26
微软知道path length limitations。
有一篇文章提供了C#中的解决方法。如果你真的关心性能,这是你最好的选择:Long Paths in .NET, Part 1 of 3 [Kim Hamilton]
如果您想继续使用Powershell,请参阅powershell.com forums上的另一个变通方法。
https://stackoverflow.com/questions/13121192
复制相似问题