2
votes

Anybody has an idea how to clear "Applications and Services Logs" using Powershell? I can easily clear the Windows Logs using Clear-EventLog, but I can't get to clear a subfolder under "Applications and Services Logs" in Windows Event Logs.

2
What error are you getting? - Musaab Al-Okaidi

2 Answers

2
votes

This looks like what you need

http://gallery.technet.microsoft.com/scriptcenter/4502522b-5294-4c31-8c49-0c9e94db8df9

Update - That link has a login. Here's the script from it -

Function Global:Clear-Winevent ( $Logname ) { 
<# 

.SYNOPSIS  
Given a specific Logname from the GET-WINEVENT Commandlet 
it will clear the Contents of that log 

.DESCRIPTION  
Cmdlet used to clear the Windows Event logs from Windows 7 
Windows Vista, Server 2008 and Server 2008 R2 

.EXAMPLE  
CLEAR-WINEVENT -Logname Setup 

.EXAMPLE  
GET-WINEVENT -Listlog * | CLEAR-WINEVENT -Logname $_.Logname 

Clear all Windows Event Logs 

.NOTES  
This is a Cmdlet that is not presently in Powershell 2.0 
although there IS a GET-WINEVENT Command to list the 
Contents of the logs.  You can utilize this instead of 
WEVTUTIL.EXE to clear out Logs.  Special thanks to Shay Levy 
(@shaylevy on Twitter) for pointing out the needed code 

#> 

[System.Diagnostics.Eventing.Reader.EventLogSession]::GlobalSession.ClearLog("$Logname") 

} 
2
votes

PowerShell - optimized for performance:

Version 1:

function Clear-EventLogs-Active
{
    ForEach ( $l in ( Get-WinEvent ).LogName | Sort | Get-Unique )
    {
        [System.Diagnostics.Eventing.Reader.EventLogSession]::GlobalSession.ClearLog("$l")
    }
    Clear-EventLog -LogName "System"
}

.

Version 2:

function Clear-EventLogs-All
{
    ForEach ( $l in Get-WinEvent -ListLog * -Force )
    {
        if ( $l.RecordCount -gt 0 )
        {
            $ln = $l.LogName
            [System.Diagnostics.Eventing.Reader.EventLogSession]::GlobalSession.ClearLog("$ln")
        }
    }
    Clear-EventLog -LogName "System"
}

.

Both versions working on 514 logs:

  • Version 1 (0.3007762 seconds) - retrieves only logs containing events

  • Version 2 (0.7026473 seconds) - retrieves all logs, and only clears the ones with events