Обходной путь Get-Childitem

Я хочу определить, какие файлы/типы файлов занимают больше всего места на файловом сервере. Из-за того, что многие пользователи создали файлы с длиной имени/пути более 260 символов, gci не работает (ярлыки-в-ярлыках-в-ярлыках-бесконечность)

Мой следующий шаг состоял в том, чтобы создать обходной путь, используя что-то, что отображает имя файла размера и путь без ограничения max_path var. (ROBOCOPY)

Вот моя функция:

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))

         }              
    }

}

}

Этот подход работает, но моя проблема в том, что он потребляет много ресурсов.

У кого-нибудь есть идея, как улучшить эту функцию... может быть, есть идея для другого обходного пути?


person PointerNullException    schedule 29.10.2012    source источник
comment
Вы используете Windows 2008R2? Если да, попробуйте отчеты диспетчера ресурсов файловых служб.   -  person vonPryz    schedule 29.10.2012
comment
Он хочет оценить это на нескольких серверах с разными ОС (2003, 2003 R2, 2008, 2008 R2) и запланировать сценарий, который отправляет, и сводку со 100 самыми большими с каждого сервера.   -  person PointerNullException    schedule 29.10.2012


Ответы (1)


Microsoft знает об ограничениях длины пути.

Есть статья, которая предлагает обходной путь на C#. Если вы действительно заботитесь о производительности, это ваш лучший выбор: Долгие пути в .NET, часть 1 из 3 [Ким Гамильтон]

Если вы хотите придерживаться Powershell, см. другой обходной путь на форумах powershell.com.

person Neolisk    schedule 29.10.2012
comment
Спасибо за этот намек. Я проверю это. Вот статья, которую я прочитал, чтобы понять мой подход к robocopy. social.technet.microsoft.com/wiki/contents/articles/ - person PointerNullException; 30.10.2012