次のコードを使用してヘルプを選択すると、多くの日付の付いたファイルのリストから1つのファイルを選択し、コピーして共有します。仲間のスタッカーから非常に親切に提供された次のコードを使用する
$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
等
等
しかし、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\"