【问题标题】:PowerShell - Move file, Rename & RotatePowerShell - 移动文件、重命名和旋转
【发布时间】:2016-09-29 08:00:23
【问题描述】:

我对 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}
    }  

这就是我卡住的地方。如果文件大于 5MB,我需要将其移动到另一个文件夹(我在脚本中有),但是当移动到该文件夹​​时,我只想保留 5 个最新文件以避免存储问题。我将需要如下命名的文件。

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

Automonitor.log.1 是最新创建的文件。所以我真的很困惑我将采取的过程以及如何重命名文件以匹配上述格式以及复制新文件时,根据创建日期再次重命名所有文件并删除最旧的文件,因此只存在 5 个文件.

如果有人有任何很棒的想法,我希望这是有道理的。

【问题讨论】:

    标签: powershell


    【解决方案1】:

    你可以这样走:

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

    这将使您获得比前 5 个更早的每个文件。 所以,这个脚本不关心文件名。如果你想这样,你应该将$a = gci $destfolder 部分更改为一些通配符。

    【讨论】:

    • 感谢马丁的帮助。我说服他们更好的方法是拥有一个日志文件而不是 5 个单独的日志。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-03
    • 1970-01-01
    • 1970-01-01
    • 2013-05-26
    • 1970-01-01
    相关资源
    最近更新 更多