2012-10-29 5 views
1

Je souhaite déterminer quels fichiers/types de fichiers consomment le plus d'espace sur le serveur de fichiers. En raison du fait que beaucoup d'utilisateurs ont créé des fichiers avec un nom/chemin de plus de 260 caractères gc ne fonctionne pas. (Raccourcis-in-shortcuts-in-shortcuts-infinity)Solution de contournement Get-Childitem

Mon étape suivante consistait à créer une solution de contournement par . utiliser quelque chose qui affiche, le nom du fichier de la taille et le chemin sans limitation MAX_PATH var (ROBOCOPY)

Voici ma fonction:

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][[email protected]#\^\$&\*\(\)-_\+=\[\]\{\}\|\\,\.\?\!\%\§öäüÖÄÜßáàðÞ]{1,}","" 

     New-Object PSObject -Property @{ 
              Filename=$Filename 
              FileSize= ("{0:#}" -f($Filesize/1MB)) 

     }    
    } 

} 

}

Cette approche fonctionne, mais mon problème est qu'il consomme beaucoup des ressources.

Est-ce que quelqu'un a une idée de comment améliorer cette fonction .... peut-être une idée pour une autre solution de contournement?

+1

Exécutez-vous Windows 2008R2? Si tel est le cas, essayez les rapports de File Services Resource Manager. – vonPryz

+0

Il veut évaluer cela sur plusieurs serveurs avec différents OS (2003, 2003 R2, 2008, 2008 R2) et planifier un script qui envoie et un résumé avec les 100 plus grands de chaque serveur – PointerNullException

Répondre

3

Microsoft connaît environ path length limitations.

Un article fournit une solution de contournement en C#. Si vous vous souciez vraiment de la performance, voici votre meilleur pari: Long Paths in .NET, Part 1 of 3 [Kim Hamilton]

Si vous voulez rester avec Powershell, voir une autre solution de contournement sur powershell.com forums.

+0

Merci pour cet indice. Je vais le tester. Voici l'article que j'ai lu pour arriver à mon approche avec robocopy. http://social.technet.microsoft.com/wiki/contents/articles/12179.net-powershell-path-too-long-exception-and-a-net-powershell-robocopy-clone-en-us.aspx – PointerNullException

Questions connexes