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图库中找到此模块。
由于它是一个模块,我不能发布整个代码,但可以包含一个链接,您可以从中下载它。
一旦你的模块,你可以做这样的事情:
Get-LongChildItem -path yourpath | export-csv output.csv -notype
终于得到它的工作。我遇到了复合问题;似乎我不得不更新到https://www.microsoft.com/en-us/download/details.aspx?id=50395,并且连接到我公司的防火墙之外,因为它不允许我安装PSAlphaFS。 – val
很高兴听到! – Kiran
你知道PSAlphaFS与-ErrorAction是否存在冲突吗?SiltentlyContinue和/或-exclude?我已经发布在这里http://stackoverflow.com/questions/38131238/powershell-exclude-directory-from-search(请参阅我的第二个最后的评论) – val