none
Exchange 2016脚本清除日志文件失败 RRS feed

  • 问题

  • 尝试以下两种方法清理,均未清理成功,有没有其他更好的方法实现自动清理安装目录下的logging文件夹下的日志文件?

    方法一:清理失败:http://www.zhixing123.cn/computer/55327.html

    方法二:使用以下脚本清理失败:

    #---------------------------------脚本开始,将脚本内容另存为.ps1----------------------------------------------
    Set-Executionpolicy RemoteSigned   
    $days=0    
    $IISLogPath="C:\inetpub\logs\LogFiles\"    
    $exinstallpath=$env:ExchangeInstallPath 
    $ExchangeLoggingPath="$exinstallpath\Logging\"
    $ExchangeLoging_Monitoring="D:\Program Files\Microsoft\Exchange Server\V15\Mailbox\Logging"
    $FrontendSMTPLog="D:\Program Files\Microsoft\Exchange Server\V15\Mailbox\TransportRoles\Logs\FrontEnd\ProtocolLog"
    $ETLLoggingPath="$exinstallpath\Bin\Search\Ceres\Diagnostics\ETLTraces\"    
    $ETLLoggingPath2="$exinstallpath\Bin\Search\Ceres\Diagnostics\Logs"    
    Function CleanLogfiles($TargetFolder)    
    {    
        if (Test-Path $TargetFolder) {    
            $Now = Get-Date    
            $LastWrite = $Now.AddDays(-$days)    
            $Files = Get-ChildItem $TargetFolder -Include *.log,*.blg, *.etl, *.txt –Recurse –Force  | Where {$_.LastWriteTime -le "$LastWrite"}    
            foreach ($File in $Files)    
                {Write-Host "Deleting file $File" -ForegroundColor "white"; Remove-Item $File -ErrorAction SilentlyContinue | out-null}    
           }    
    Else {    
                Write-Host "The folder $TargetFolder doesn't exist! Check the folder path!" -ForegroundColor "white"    
        }    
    }    
    CleanLogfiles($IISLogPath)    
    CleanLogfiles($ExchangeLoggingPath)    
    CleanLogfiles($ETLLoggingPath)    
    CleanLogfiles($ETLLoggingPath2)
    CleanLogFiles($ExchangeLoging_Monitoring)
    CleanLogfiles($FrontendSMTPLog)
    2017年2月14日 6:41

答案

  • 你好,

    自动化的方案应该都与你上面提到的两种方法差不多。

    你提到的第一种方案应该是很好的一种方法,不知道你在使用的过程中遇到什么问题?

    我有在我的环境运行下面的指令,是可以成功清理部分日志的:

    gci 'C:\Program Files\Microsoft\Exchange Server\V15\Logging' -Directory | gci -Include '*.log','*.blg' -Recurse | ? LastWriteTime -lt (Get-Date).AddDays(-7) | Remove-Item

    但是由于有些日志正在被其他进程占用,是无法被清理的,会收到如下图报错,表明有哪些具体的日志文件正在被占用导致删除失败,这个可能是你觉得没有清理成功的原因所在:

    谢谢!


    Niko Cheng
    TechNet Community Support


    Please remember to mark the replies as answers.
    If you have feedback for TechNet Subscriber Support, contact tnmff@microsoft.com.

    • 已标记为答案 席萌 2017年2月20日 1:47
    2017年2月15日 3:23
    版主

全部回复

  • 你好,

    自动化的方案应该都与你上面提到的两种方法差不多。

    你提到的第一种方案应该是很好的一种方法,不知道你在使用的过程中遇到什么问题?

    我有在我的环境运行下面的指令,是可以成功清理部分日志的:

    gci 'C:\Program Files\Microsoft\Exchange Server\V15\Logging' -Directory | gci -Include '*.log','*.blg' -Recurse | ? LastWriteTime -lt (Get-Date).AddDays(-7) | Remove-Item

    但是由于有些日志正在被其他进程占用,是无法被清理的,会收到如下图报错,表明有哪些具体的日志文件正在被占用导致删除失败,这个可能是你觉得没有清理成功的原因所在:

    谢谢!


    Niko Cheng
    TechNet Community Support


    Please remember to mark the replies as answers.
    If you have feedback for TechNet Subscriber Support, contact tnmff@microsoft.com.

    • 已标记为答案 席萌 2017年2月20日 1:47
    2017年2月15日 3:23
    版主
  • HI niko,我这边测试结果跟您的相同,报错相同,被占用而无法删除,这个占用不知道会不会一直存在,还是说下次清除的时候可能会删除之前被占用的文件?我所提供的脚本在之前exchange 2013的时候清除日志文件是没问题的,但2016不行,到目前还未找到其他更有效的方法,
    2017年2月15日 4:59
  • 你好,

    根据我的测试,这个可能是一直占用的。但是无法被清除的日志只是很少的一部分,大部分日志是可以使用该方案来清除的,所以还是值得一用的。

    谢谢!


    Niko Cheng
    TechNet Community Support


    Please remember to mark the replies as answers.
    If you have feedback for TechNet Subscriber Support, contact tnmff@microsoft.com.

    2017年2月16日 5:52
    版主
  • 针对日志的清理,我个人不太建议用脚本或是任务去自动执行,建议你在确认对你无用或是可以删除后再处理。

    1.我的博客:http://blog.5dmail.net/user1/1/index.html 2.Exchange Server论坛 :http://www.5dmail.net/bbs/forum-35-1.html

    2017年2月17日 4:11
    版主