2016-06-09 7 views
0

Этот вопрос является расширением PowerShell - searching for existing files generates empty output.PowerShell - как захватить имена файловых путей, включая имена длинной файловой трассы с этим кодом + AlphaFS

У меня возникли проблемы с записью длинных имен файлов с помощью AlphaFS. Я просмотрел связанные вопросы AlphaFS, но я не вижу, как они решают мою проблему: приведенный ниже код предназначен для захвата файлов в исходном каталоге $ в .csv, в том числе с путями длиной более 260 символов. Тем не менее, выход я получаю в TestFileLocations.csv состоит из 1 линии, которая читает

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

с последующим 125060 линий, которые читают

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

PS Код

[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 

Мой TestFindFile. csv содержит только 4 строки, относящиеся к 3 существующим файлам, которые должны быть найдены кодом. В последнем файле 262 символов:

Name 
123.pdf 
321.pdf 
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.txt 

Я нахожусь в Windows 7. Любые указатели будут оценены.

ответ

1

Я завернул Alphafs в модуль PS, который вы можете найти в галерее PowerShell здесь.

Поскольку это модуль, я не могу опубликовать весь код, но могу включить ссылку, откуда вы можете ее скачать.

PSAlphaFS

После того, как у вас есть модуль, который вы можете сделать что-то вроде этого:

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

наконец получил его на работу. У меня были проблемы с рецептурой; Кажется, мне пришлось обновить https://www.microsoft.com/en-us/download/details.aspx?id=50395, а также подключиться за пределами брандмауэра моей компании, поскольку это не позволяло мне устанавливать PSAlphaFS. – val

+0

здорово это слышать! – Kiran

+0

Знаете ли вы, что PSAlphaFS конфликтует с -ErrorAction SiltentlyContinue и/или -exclude? Я разместил здесь http://stackoverflow.com/questions/38131238/powershell-exclude-directory-from-search (см. Мой второй последний комментарий) – val