Я хочу определить, какие файлы/типы файлов занимают больше всего места на файловом сервере. Из-за того, что многие пользователи создали файлы с длиной имени/пути более 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))
}
}
}
}
Этот подход работает, но моя проблема в том, что он потребляет много ресурсов.
У кого-нибудь есть идея, как улучшить эту функцию... может быть, есть идея для другого обходного пути?