使用PowerShell匹配文件名并复制

11
我很难将这个简单的PowerShell脚本搞定。我已经搜索过,但是没有找到答案。
从代码中可以看出,我正在指定源和目标位置。 $filedate变量使用dateadd函数生成昨天的日期,因为文件名包含日期信息。 $filter变量包含了我要搜索的字符串,其中包括日期部分。
Get-ChildItem命令本身是工作的,但是当应用筛选器时它返回空值。我缺少什么来让它正常运行呢?
$source = "C:\MSSQL.1\Backup\"
$destination = "D:\MSSQL.2\Backup\"
$filedate = (get-date).AddDays(-1).tostring('yyyyMMdd')
$filter = "FULL_(local)_Product_" + $filedate + "*"
Get-ChildItem -Path $source -filter $filter | Copy-Item -Destination $destination

最简单的结论是过滤器不匹配。您能否编辑您的问题并添加以下内容:$filter字符串实际上等于什么,以及它应该匹配的一个文件的名称。 - Andrew Shepherd
对我来说运行良好。您使用以下命令会得到什么结果:gci $source "FULL_(local)Product*" - Shay Levy
1个回答

23
尝试使用Where-Object cmdlet-match运算符来过滤文件列表:
$source = "C:\MSSQL.1\Backup\"
$destination = "D:\MSSQL.2\Backup\"
$filedate = (Get-Date).AddDays(-1).ToString("yyyyMMdd")
$filter = "FULL_(local)_Product_$filedate"
Get-ChildItem -Path $source | Where-Object { $_.Name -match $filter } | Copy-Item -Destination $destination

如果你仍然没有得到任何结果,那么我们需要检查过滤器本身。

相关资源:


复制项目 - 目标 $destination - Joe Johnston

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接