Powershell get-childitem输出格式

时间:2014-02-13 19:25:38

标签: windows powershell powershell-v2.0 powershell-v3.0

如何更改powershell输出的格式?
我正在运行这个:

cgi -Recurse K:\AppData\*.* -Filter *.model | ? {$_.LastWriteTime -gt (Get-Date).AddDays(-6)} | sort LastWriteTime -descending >> C:\AAA\result.txt

我得到的结果是这种格式:

Directory: K:\AppData\


Mode                LastWriteTime     Length Name                                                                                                                                                                                                  
----                -------------     ------ ----                                                                                                                                                                                                  
-a---        13/02/2014  11:29 AM    7269129 20-300_3001_REV02_ECR4431.CATPart 
-a---        13/02/2014  11:29 AM    7269129 20-300_3001_REV02_ECR4431.CATPart 
-a---        13/02/2014  11:29 AM    7269129 20-300_3001_REV02_ECR4431.CATPart

如何将输出格式更改为:

LastWriteTime           Name                                  Directory
-------------           ----                                  -----
 13/02/2014  11:29 AM   20-300_3001_REV02_ECR4431.CATPart     K:\AppData\
 13/02/2014  11:29 AM   20-300_3001_REV02_ECR4431.CATPart     K:\AppData\
 13/02/2014  11:29 AM   20-300_3001_REV02_ECR4431.CATPart     K:\AppData\

2 个答案:

答案 0 :(得分:4)

我知道通常的答案是,不要使用format- * cmdlet,因为输出实际上不能被其他cmdlet使用,但由于这是一个格式化问题,所以怎么样像:

get-childitem -Recurse K:\AppData\*.* -Filter *.model | ? {$_.LastWriteTime -gt (Get-Date).AddDays(-6)} | sort LastWriteTime -descending | format-table LastWriteTime, Name, Directory >> C:\AAA\result.txt

我能看到的唯一缺点是,如果目录名称结尾太长,您可能需要尝试在format-table cmdlet的末尾添加-Wrap-AutoSize

如果这些都没有解决宽度问题(假设你有一个),我找到了一个(页面)[http://poshoholic.com/2010/11/11/powershell-quick-tip-creating-wide- tables-with-powershell /]关于创建非常宽的表,所以你最终会得到类似的东西:

get-childitem -Recurse K:\AppData\*.* -Filter *.model | ? {$_.LastWriteTime -gt (Get-Date).AddDays(-6)} | sort LastWriteTime -descending | format-table LastWriteTime, Name, Directory -AutoSize | Out-String -Width 1024 >> C:\AAA\result.txt

答案 1 :(得分:1)

您可以使用Select-Object(选择)重新排序属性:

gci -Recurse K:\AppData\*.* -Filter *.model | 
? {$_.LastWriteTime -gt (Get-Date).AddDays(-6)} | 
sort LastWriteTime -descending |
Select LastWriteTime,Name,Directory