2016-05-31 3 views
0

Я довольно новичок в powershell и до сих пор учился. Я завершил свой первый скрипт и теперь пытаюсь добавить в него некоторые записи. Я могу добавить файл журнала в порядке, но встал на резервную копию журнала и повернул его. Это то, что у меня есть до сих порPowerShell - переместить файл, переименовать и повернуть

$CheckFile = Test-Path $Logfilepath 
IF ($CheckFile -eq $false) { 
$Date = (Get-Date).tostring() 
$Date + ' - Automonitor log created - INFO' | Out-File -Append -Force $Logfilepath } 
Else { 
    IF ((Get-Item $Logfilepath).length -gt $Size) { 
    Move-Item $Logfilepath -Destination $LogsOldFolder -Force} 
    } 

Здесь я застрял. Если файл больше 5 МБ, мне нужно, чтобы он переместился в другую папку (которая у меня есть в скрипте), но при перемещении в эту папку я хочу сохранить только 5 новых файлов, чтобы избежать проблем с хранилищем. Мне понадобятся файлы, названные ниже.

Automonitor.log.1 
Automonitor.log.2 
Automonitor.log.3 
Automonitor.log.4 
Automonitor.log.5 

Automonitor.log.1 - это новейший созданный файл. Таким образом, я действительно озадачен процессом, который я возьму, и как переименовать файлы в соответствии с указанным выше форматом и когда новый файл будет скопирован, чтобы переименовать все из них, в зависимости от даты, созданной и удалив старое, поэтому только 5 файлов ,

Надеюсь, это имеет смысл, если у кого-то есть идеи, которые были бы замечательными.

ответ

1

Вы можете идти по этому пути:

$a = gci $destfolder 
if ($a.count -gt 5) 
{ 
    $a | sort lastwritetime | select -first ($a.count - 5) | remove-item 
} 

Это поможет вам каждый файл, который старше, чем первый 5. Таким образом, этот сценарий оленья кожа забота о именах файлов. Если вы этого хотите, вы должны изменить часть $a = gci $destfolder на некоторые подстановочные знаки.

+0

Благодарим за помощь Мартина. Я убедил их, что лучшим маршрутом является наличие одного файла журнала вместо 5 отдельных журналов. –

Смежные вопросы