使用以下代码选择帮助从许多日期文件列表中选择 1 个文件,然后复制以共享。使用 Stacker 同伴非常友好地提供的以下代码
$pastdays = -7
$pastdate = [datetime]::Now.AddDays($pastdays)
$files = Get-ChildItem "V:\Capacity Manager Size reports\"
$filename = ($files | Where-Object {$_.Name -like "Database_Server1_Userdb1_" + $pastdate.Day + "_" + $pastdate.Month + "_" + $pastdate.Year+ "*.pdf"})
Copy-Item -Path $filename.FullName "\\Server50\report_Archive"
我需要扩展此过程以针对文件夹中的许多文件运行 - 每个文件的名称略有不同,但文件名遵循通用模板
原始文件名示例:
Database_Server1_UserDB1_30_10_2012_00_20_51
Database_Server2_UserDB2_30_10_2012_01_20_51
ETC
ETC
但我不确定如何在 foreach 中最好地做到这一点?
我正在考虑创建一个模板文件以加载到一个变量中,该变量包含在复制之前要检查的所有文件示例
所以:
$Report_Template = Get-Content "C:\Powershell\FileTemplate_Name.txt";
FileTemplate_name.txt:
Database_Server1_tempdb_
Database_Server1_UserDB1_
Database_Server1_UserDB2_
Database_Server2_UserDB2_
Database_Server2_UserDB4_
$Report_Template = Get-Content "C:\Powershell\QCM_Template_Name.txt";
$pastdays = -7
$pastdate = [datetime]::Now.AddDays($pastdays)
$files = Get-ChildItem "V:\Capacity Manager Size reports\"
foreach($template in $Report_Template)
$filename = ($files | Where-Object {$_.Name -like $template + $pastdate.Day + "_" + $pastdate.Month + "_" + $pastdate.Year+ "*.pdf"})
Copy-Item -Path $filename.FullName "\\Server50\CapacityManagerReports_Archive\"