powershell get-childitem到csv的详细信息

tor*_*res 1 directory powershell enumerate

我正在尝试为具有深层文件夹结构的文件共享创建CSV文件.

我希望CSV看起来像:

filename, filepath, file type, folderStructure
Run Code Online (Sandbox Code Playgroud)

到目前为止,我有以下内容:

#Get-ChildItem -Path D:\ -Recurse
$directory="d:\"
gci $directory -recurse |
where {$_.psiscontainer} |
foreach {
    get-childitem $_.fullname |
    sort creationtime |
    select -expand fullname -last 1
}
Run Code Online (Sandbox Code Playgroud)

Aus*_*nch 6

你不需要在Powershell中递归递归.它将自动遍历子目录的所有子目录.

我也不太了解你想要的一些信息,但这里有一个脚本可以完成我想要的,我相信并且IMO可以更好地阅读.

Get-ChildItem -Path X:\Test -Recurse |`
foreach{
$Item = $_
$Type = $_.Extension
$Path = $_.FullName
$Folder = $_.PSIsContainer
$Age = $_.CreationTime

$Path | Select-Object `
    @{n="Name";e={$Item}},`
    @{n="Created";e={$Age}},`
    @{n="filePath";e={$Path}},`
    @{n="Extension";e={if($Folder){"Folder"}else{$Type}}}`
}| Export-Csv X:\Test\Results.csv -NoTypeInformation 
Run Code Online (Sandbox Code Playgroud)

您需要更改路径,因为我为测试创建了此路径.我的结果在Excel中看起来像这样:

+-------------------------------+----------------+-------------------------------------+-----------+
|             Name              |    Created     |              filePath               | Extension |
+-------------------------------+----------------+-------------------------------------+-----------+
|         test2                 | 3/6/2013 19:21 | X:\Test\test2                       | Folder    |
|         Results.csv           | 3/6/2013 19:51 | X:\Test\Results.csv                 | .csv      |
|         test3                 | 3/6/2013 19:21 | X:\Test\test2\test3                 | Folder    |
|         New Text Document.txt | 3/6/2013 19:21 | X:\Test\test2\New Text Document.txt | .txt      |
+-------------------------------+----------------+-------------------------------------+-----------+
Run Code Online (Sandbox Code Playgroud)

如果它表示扩展名的"文件夹",则只返回它是一个目录而不是空白(无扩展名).