使用Powershell获取文件列表 - 在两个日期之间修改

时间:2015-11-24 07:15:07

标签: powershell powershell-v2.0

我使用以下命令获取在20小时之前和之后20天之后修改过的所有文件。

Get-ChildItem -Path '\\server\c$\Program Files (x86)\folder'   -recurse -Filter *.* -include *.* |? {$_.LastWriteTime -lt (Get-Date).Addhours(-20) }|? {$_.LastWriteTime -gt (Get-Date).AddDays(-20)} | Select Fullname ,LASTWRITETIME | Sort-Object -Property LASTWRITETIME -Descending 

它确实给了我正确的结果。

但是我将Fullname称为:

\\server\c$\Program Files (x86...

我如何获得全名? Fullname非常长......超过260个字符。

我已经尝试了

Select -Expand Fullname

它工作正常,但我无法在LastWriteTime

中使用它
Select -Expand Fullname, LastwriteTime 

上面的命令给我错误。

1 个答案:

答案 0 :(得分:2)

您可以使用Format-Table cmdlet格式化输出,如下所示:

$table_properties = @{Expression={$_.Fullname};Label="Full Name";width=195}, 
                    @{Expression={$_.LastWriteTime};Label="Last Write Time";width=35}

Get-ChildItem -Path '\\server\c$\Program Files (x86)\folder'   -recurse -Filter *.* -include *.* |
? {$_.LastWriteTime -lt (Get-Date).Addhours(-20) }|
? {$_.LastWriteTime -gt (Get-Date).AddDays(-20)} | 
Sort-Object -Property LASTWRITETIME -Descending |
Format-Table $table_properties

而不是Select Fullname,LASTWRITETIME使用格式参数创建自定义对象$table_properties,并将其传递给Format-Table

如果您的字符串比PowerShell主机显示宽度宽,而不是管道输出到Out-String -Width 500,其中500是足以显示所有字段的字符。

请参阅TechNet上的Creating custom tables文章。