我是使用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选项时,我的脚本失败了。
我做错了什么?
答案 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