2016-06-09 3 views
0

Cette question est une extension de PowerShell - searching for existing files generates empty output.PowerShell - comment capturer des noms de chemin de fichier, y compris les noms de chemin de fichier longs avec ce code + AlphaFS

Je rencontre des problèmes pour capturer des noms de chemin d'accès longs avec AlphaFS. J'ai examiné des questions AlphaFS connexes, mais je ne vois pas comment elles traitent mon problème: Le code ci-dessous est destiné à capturer des fichiers dans un répertoire $ source dans un .csv, y compris ceux avec des chemins de plus de 260 caractères. Cependant, la sortie que je reçois dans TestFileLocations.csv se compose de 1 ligne qui lit

IsReadOnly|"IsFixedSize"|"IsSynchronized"|"Keys"|"Values"|"SyncRoot"|"Count" 

suivi par 125060 lignes qui lisent

False|"False"|"False"|"System.Collections.Hashtable+KeyCollection"|"System.Collections.Hashtable+ValueCollection"|"System.Object"|"1" 

PS code

[System.Reflection.Assembly]::LoadFrom('C:\AlphaFS\AlphaFS\lib\net35\AlphaFS.dll') 
$searchFiles = Import-CSV 'C:\Data\SCRIPTS\PS1\TestFindFile.csv' -Header ("Name") 
$source = 'C:\Data\Scripts' 
$outputPath = 'c:\data\scripts\ps1\TestFileLocation.csv' 

    $searchFiles | ForEach-Object { 
     $files = [Alphaleonis.Win32.Filesystem.Directory]::EnumerateFileSystemEntries($source,'*',[System.IO.SearchOption]::AllDirectories) 
     $files | ForEach-Object { [PSCustomObject] @{FileName = $_} } 
    } | export-csv -notypeinformation -delimiter '|' -path $outputPath 

Mon TestFindFile. csv contient seulement 4 lignes appartenant à 3 fichiers existants qui devraient être trouvés par le code. Le dernier fichier a 262 caractères:

Name 
123.pdf 
321.pdf 
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.txt 

Je suis sous Windows 7. Tous les pointeurs seraient appréciés.

Répondre

1

J'ai enveloppé Alphafs dans un module PS que vous pouvez trouver dans la galerie PowerShell ici.

Puisqu'il s'agit d'un module, je ne peux pas publier tout le code, mais je peux inclure un lien d'où vous pouvez le télécharger.

PSAlphaFS

Une fois que vous avez le module que vous pouvez faire quelque chose comme ceci:

Get-LongChildItem -path yourpath | export-csv output.csv -notype 
+0

finalement eu à travailler. J'avais des problèmes de composition; semble que je devais mettre à jour à https://www.microsoft.com/en-us/download/details.aspx?id=50395 et également se connecter en dehors du pare-feu de ma société car il ne me laissait pas installer PSAlphaFS. – val

+0

génial d'entendre ça! – Kiran

+0

savez-vous si PSAlphaFS est en conflit avec -ErrorAction SiltentlyContinue et/ou -exclude? J'ai posté ici http://stackoverflow.com/questions/38131238/powershell-exclude-directory-from-search (voir mon deuxième commentaire précédent) – val