PowerShell — как захватить имена путей к файлам, включая длинные имена путей к файлам, с помощью этого кода + AlphaFS

Этот вопрос является расширением PowerShell - поиск существующих файлов генерирует пустой вывод< /а>.

У меня возникли проблемы с захватом длинных имен путей к файлам с помощью AlphaFS. Я просмотрел связанные вопросы AlphaFS, но не вижу, как они решают мою проблему: приведенный ниже код предназначен для захвата файлов в каталоге $source в .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. Любые указатели будут оценены.


person val    schedule 09.06.2016    source источник


Ответы (1)


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

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

PSAlphaFS

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

 Get-LongChildItem -path yourpath | export-csv output.csv -notype
person Kiran    schedule 09.06.2016
comment
наконец-то заработало. У меня были проблемы с компаундированием; кажется, мне пришлось обновить до microsoft.com/en-us/ download/details.aspx?id=50395, а также подключиться за пределами брандмауэра моей компании, поскольку он не позволял мне установить PSAlphaFS. - person val; 30.06.2016
comment
рад слышать! - person Kiran; 01.07.2016
comment
знаете ли вы, конфликтует ли PSAlphaFS с -ErrorAction SiltentlyContinue и/или -exclude? Я разместил здесь stackoverflow.com/questions/38131238/ (см. мой предпоследний комментарий) - person val; 01.07.2016