PowerShell - 如何捕获文件路径名称,包括使用此代码的长文件路径名称+ AlphaFS

问题描述:

此问题是PowerShell - searching for existing files generates empty output的扩展。PowerShell - 如何捕获文件路径名称,包括使用此代码的长文件路径名称+ AlphaFS

我在使用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只包含与应由代码找到的3个现有文件有关的4行。最后一个文件有262个字符:

Name 
123.pdf 
321.pdf 
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.txt 

我在Windows 7上。任何指针,将不胜感激。

我将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