Powershell -recurese脚本无法搜索子目录中的所有文件

时间:2015-01-29 13:48:20

标签: powershell-v3.0

我是使用PowerShell的新手,我遇到了障碍。我试图让我的脚本搜索所有新文件(在前一天晚上)并将它们复制到测试文件夹。此脚本首先映射到所有SQL BAK文件所在的位置。接下来应该发生的事情是搜索前一天晚上的所有新BAK文件并将它们复制到测试文件夹中。但是它只复制一个文件,它只是几天前的日期。

 $bak_path = "\\nas2\sqlbackups"

 get-childitem -path $bak_path -Filter "*.bak" -recurse | 
     where-object { -not $_.PSIsContainer } | 
     sort-object -Property $_.CreationTime | 
     select-object -last 1 | copy-item -Destination I:\test

当我按如下方式运行此脚本时,它会返回所有BAK文件。这告诉我过滤器工作正常。我有其他文件(* .log,* .rpt)在我不想检索的相同位置。

 $bak_path = "\\nas2\sqlbackups"
 get-childitem -path $bak_path -Filter "*.bak" -recurse

当我更改此脚本以直接查看包含许多SQL BAK文件的文件夹时,它可以正常工作!

 $bak_path = "\\nas2\sqlbackups\SERVER123\Database\FULL"

get-childitem -path $bak_path -Filter "*.bak" | 
    where-object { -not $_.PSIsContainer } | 
    sort-object -Property $_.CreationTime | 
    select-object -last 1 | copy-item -Destination I:\test

但是当我尝试使用-recurse选项时,我的脚本失败了。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

你应该使用这个:

sort-object -Property CreationTime

而不是:

sort-object -Property $_.CreationTime

比较

get-childitem -path $bak_path -Filter "*.bak" -File | 
sort-object -Property $_.CreationTime |
select-object Name, CreationTime

要:

get-childitem -path $bak_path -Filter "*.bak" -File | 
sort-object -Property CreationTime |
select-object Name, CreationTime