PowerShell脚本,用于查找名为xyz的文件夹,以及列出内容

时间:2014-05-26 23:56:25

标签: powershell

我正在编写一个PowerShell脚本。基本上我正在尝试查找共享卷中具有特定名称的文件夹,这些文件夹的多个实例在不同的DIR级别都在整个共享中具有相同的名称。我也需要列出文件夹路径和内容并输出到CSV。我已经能够使用以下脚本列出文件夹路径:

gci -Filter "foldername" -Recurse -Path "X:\DIR" -Directory | select-object FullName | Export-Csv C:\Output\folderlist.csv

这一切都很好,但现在我想列出名为" Foldername"的每个文件夹的文件内容。这是它变得棘手的地方,有些文件夹有内容,有些文件夹是空的。我总是需要输出文件夹路径,即使它是空的,也列出文件夹内容,如果它有内容。

以下脚本将列出名为" foldername"的所有文件夹,但它只输出包含内容的文件夹,如果文件夹为空,则路径列表不会包含在内。

gci -Path X:\DIR -Filter *foldername* | where { $_.psiscontainer } | gci | Export-Csv C:\Output\folderlist.csv

我现在也在PowerShell上遇到260个字符的限制。只列出文件夹时很好,但是当它到达文件级别时,它会弹出一些文件夹,因为文件夹路径或文件名太长了。

我读了一篇关于通过PowerShell使用robocopy来解决260/248字符限制的人的文章。

任何建议都很棒。

1 个答案:

答案 0 :(得分:0)

$Search = gci -Filter "Test" -Recurse -Path "d:" -Directory 
Foreach ($path in $Search.fullname) {
Write-output $path | Out-File d:\Filelist.txt -append
$file = gci -path $path | select name 
$file.name | out-file d:\filelist.txt -append
write-output "------- Next Folder --------------" | Out-File d:\Filelist.txt -append }

对于输出文件> 260,您可以使用get-folderitem.ps1脚本: http://gallery.technet.microsoft.com/Get-Deeply-Nested-Files-a2148fd7

$Search = gci -Filter "Test" -Recurse -Path "d:\Testfolder" -Directory 
Foreach ($path in $Search.fullname) {
Write-output $path | Out-File d:\Filelist.txt -append
$file = get-folderitem -Path $path | where {$_.fullname.length -gt 260} 
$file.name | out-file d:\filelist.txt -append
write-output "------- Next Folder --------------" | Out-File d:\Filelist.txt -append }