在Powershell中格式化命令输出

时间:2018-03-04 12:34:49

标签: 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:\GetDataTest\dir1





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

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





    Directory: D:\GetDataTest\dir2





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

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

我想删除所有空格以及在目录中的项目列表之前读取“Directory:..”的行。

我所关注的输出格式是

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 

1 个答案:

答案 0 :(得分:2)

根据JoesfZ's comment,您可以使用Select-Object指定属性:

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

您还可以使用Name和Expression哈希表来操作属性,如上面的链接所示 - 例如,从FullName属性中去掉“D:\ GetDataTest”:

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

NameExpression可以进一步缩写为ne