2012-08-23 4 views
0

저는 PowerShell을 사용하기 시작했습니다. 도서 및 Google 검색에서 도움이 되었기 때문에이 스크립트를 작성했습니다. 내가 가지고있는 문제는 그것이 폴더 구조를 유지하지 않는다는 것입니다. 하나의 네트워크 위치에서 5 일이 넘은 파일을 확인하고 있습니다. 5 일보다 오래되면 다른 네트워크 위치로 이동합니다. 두 번째 위치에서 30 일 넘은 파일을 확인하고 해당 파일을 삭제합니다.Powershell 보관 스크립트

$movepath = "C:\test" 
$archpath = "C:\test2" 
$deletepath = "C:\files" 
$movedays = "5" 
$deletedays = "30" 
$datetime = get-date 
$deletelog = "c:\logs\deletelog.txt" 
$movelog = "c:\logs\movelog.txt" 
$errorlog = "c:\logs\errorlog.txt" 

write-progress -activity "Archiving Data" -status "Progress:" 

Get-Childitem -Path $movepath -Recurse | Where-Object {$_.LastWriteTime -lt (get-date).AddDays(-$movedays)} | 
ForEach { 
$filename = $_.fullname 
try 
{ 
Move-Item $_.FullName -destination $archpath -force -ErrorAction:SilentlyContinue 
"Moved $filename to $archpath at $datetime successfully" | add-content $movelog 
} 
catch 
{ 
"Error moving $filename: $_ " | add-content $errorlog 
} 
} 
Get-Childitem -Path $deletepath | Where-Object {$_.LastWriteTime -lt (get-date).AddDays(-$deletedays)} | 
ForEach { 
$filename = $_.fullname 
try 
{ 
Remove-Item $_.FullName -force -ErrorAction:SilentlyContinue 
"Removed $filename at $datetime successfully" | add-content $deletelog 
} 
catch 
{ 
"Error moving $filename: $_ " | add-content $errorlog 
} 
} 

답변

1

폴더 구조를 유지하려면 논리를 추가해야합니다.

$FileName = $_.FullName.Replace($MovePath, $ArchPath); 
관련 문제