2016-06-09 129 views
0

此問題是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上。任何指針,將不勝感激。

回答

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