Я не совсем уверен, что понимаю. Но я думаю, что вы хотите переместить папки из \archive
в \archive\movetotape
, чтобы заполнить \movetotape
, пока размер не станет $ClosedJobsSize
или меньше. Правильно?
Пара вещей: вы складываете размер всего в \archive
, поэтому результат вашего сравнения никогда не изменится. Во-вторых, одна из проверенных папок - сама MoveToTape
, что может привести к ее перемещению в себя (это должно дать исключение).
Учитывая это, я думаю, что этот код будет работать, но я не проверял его.
## Get all the directories in \arcive that need to be moved
$Directories = Get-ChildItem "\\srv02\d$\Prepress\Archive" |
Where-Object {$_.PSIsContainer -and ($_.Name -ne "MoveToTape")} | Sort-Object CreationTime -Descending
foreach ($Directory in $Directories)
{
$SumOfMoveToTape = (Get-ChildItem "\\srv02\d$\prepress\archive\MoveToTape\" -Recurse | Measure-Object -Property Length -Sum).Sum
$SumOfItem = (Get-ChildItem $_.FullName -Recurse | Measure-Object -Property Length -Sum).Sum
if(($SumOfMoveToTape + $SumOfItem) -lt $ClosedJobsSize)
{
## If we can fit on MoveToTape, then move this directory
Move-Item -Destination "\\srv02\d$\prepress\archive\MoveToTape\"
}
## If you want to keep folders in order (and not try to squeze whatever onto the tape
## then put an 'else {break}' here
}