How can I change the formatting of powershell output?
I am running this:
cgi -Recurse K:\AppData\*.* -Filter *.model | ? {$_.LastWriteTime -gt (Get-Date).AddDays(-6)} | sort LastWriteTime -descending >> C:\AAA\result.txt
The result I got is in this format:
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
How can I change the output format to this :
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\
The Get-ChildItem cmdlet uses the Path parameter to specify the directory C:\Test . Get-ChildItem displays the files and directories in the PowerShell console. By default Get-ChildItem lists the mode (Attributes), LastWriteTime, file size (Length), and the Name of the item.
Use the Get-ChildItem cmdlet in PowerShell to get the full path of the file in the current directory. Get-ChildItem returns one or more items from the specified location and using the file FullName property, it gets the full path of the file.
Get-ChildItem displays the files and directories in the PowerShell console. By default, Get-ChildItem lists the mode (Attributes), LastWriteTime, file size (Length), and the Name of the item. The letters in the Mode property can be interpreted as follows: l (link)
If you specify the AutoSize parameter when you run the Format-Table command, PowerShell calculates column widths based on the actual data displayed. This makes the columns readable. The Format-Table cmdlet might still truncate data, but it only truncates at the end of the screen.
I know the usual answer is, don't use the format-* cmdlets, since the output can't really be used by other cmdlets, but since this a formatting question, how about something like:
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
The only downside I can see is if the directory name ends up being too long, you may need to try playing with adding either -Wrap
or -AutoSize
to the end of the format-table cmdlet.
If neither of those solves the width issue (assuming you even have one), I found a (page)[http://poshoholic.com/2010/11/11/powershell-quick-tip-creating-wide-tables-with-powershell/] about creating really wide tables, so you could end up with something like:
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
You can re-order the properties with Select-Object
(select):
gci -Recurse K:\AppData\*.* -Filter *.model |
? {$_.LastWriteTime -gt (Get-Date).AddDays(-6)} |
sort LastWriteTime -descending |
Select LastWriteTime,Name,Directory
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With