在 Powershell 中格式化命令输出



我正在尝试使用Powershell获取给定路径的"dir"输出,但我很难尝试获得所需的格式。我是Powershell的新手,所以对我使用的命令的任何建议对我也非常有帮助。

使用的命令

 $dirs  = (Get-ChildItem -Recurse $path | Format-Table -HideTableHeaders | Out-String).Split("`n")

我得到的输出

    Directory: D:GetDataTest


d-----         3/4/2018   6:02 PM                dir1                                                             
d-----         3/4/2018   6:02 PM                dir2                                                             
-a----         3/2/2018   3:56 PM           1024 file_1                                                           
-a----         3/2/2018   3:56 PM           1024 file_2                                                           


    Directory: D:GetDataTestdir1


-a----         3/2/2018   3:56 PM           1024 file_1                                                           
-a----         3/2/2018   3:56 PM           1024 file_2                                                           


    Directory: D:GetDataTestdir2


-a----         3/2/2018   3:56 PM           1024 file_1                                                           
-a----         3/2/2018   3:56 PM           1024 file_2                 

我想删除所有空格以及目录中项目列表之前显示"目录:.."的行。

我追求的输出格式是

d-----         3/4/2018   6:02 PM                dir1                                                             
d-----         3/4/2018   6:02 PM                dir2                                                             
-a----         3/2/2018   3:56 PM           1024 file_1                                                           
-a----         3/2/2018   3:56 PM           1024 file_2                                                           
-a----         3/2/2018   3:56 PM           1024 file_1                                                           
-a----         3/2/2018   3:56 PM           1024 file_2                                                           
-a----         3/2/2018   3:56 PM           1024 file_1                                                           
-a----         3/2/2018   3:56 PM           1024 file_2 

根据JoesfZ的评论,您可以使用Select-Object指定属性:

Get-Childitem -R $path | Select-Object -Property Mode, LastWriteTime, Length, Name

您还可以使用名称和表达式哈希表操作属性,如上面的链接中所述 - 例如,从 FullName 属性中删除"D:\GetDataTest":

Get-Childitem -R $path |
    Select-Object -Property @{Name = "PartialPath"; Expression = {($_.FullName).Replace("D:GetDataTest","")}}

NameExpression可以进一步缩写为ne

最新更新