如何使用 powershell 命令清除 Microsoft-Windows-Diagnosis-DPS/Operational 事件日志?

如何使用 powershell 命令清除 Microsoft-Windows-Diagnosis-DPS/Operational 事件日志?

我想清除Operational以下路径中的类型日志Event Viewer

Applications and Services Logs/ Microsoft/ Windows/DriverFrameworks-UserMode

我尝试用这个命令电源外壳然后运行行政人员

remove-eventlog -logname $"Microsoft-Windows-Diagnosis-DPS/Operational"

但它不起作用,我收到这个错误:

在此处输入图片描述

实际上,我想追踪(已连接\已断开连接的) USB 设备日志并清除它们。

问候 ....

答案1

首先这个……

$"Microsoft-Windows-Diagnosis-DPS/Operational"

... 是错误的语法。你在这里做的事情不是它的用例。‘$’(以及许多其他符号)在 PowerShell 中具有特殊含义,并且不能将单引号/双引号与普通简单字符串一起使用。

错误消息意味着日志确实不存在或者您没有传递日志的完整路径。

删除动词并不意味着清除或清空,而是意味着删除/销毁文件。这是一个系统文件,所以这不是什么事。

删除事件日志

删除事件日志或取消注册事件源。

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/remove-eventlog?view=powershell-5.1

在使用 cmdlet 之前,请务必仔细阅读。不要猜测,否则您真的会毁掉您的系统和企业。

'PowerShell 清除 Windows 事件日志'

在从代码中删除/注释掉这些开关之前,始终在所有破坏性代码(删除、重命名、移动等)上使用 -WhatIf 和 -Confirm:$true,以确保您将获得预期的结果。

在采取破坏性行动之前务必先执行 Get-*。

Get-EventLog -LogName 'YourLogNameOrFullpathHere'

打开 EventViewer(您显示您已经完成 - 但是您正在查看一个日志...但您说您想清除另一个)以获取日志的全名,或者执行以下操作...

# List all logs
Get-WinEvent -ListLog * -EA silentlycontinue

...或列出日志目标

 Get-WinEvent -ListLog 'Microsoft-Windows-DriverFrameworks-UserMode/Operational'

# Results
<#
LogMode   MaximumSizeInBytes RecordCount LogName                                                                                                                                               
-------   ------------------ ----------- -------                                                                                                                                               
Circular             1052672             Microsoft-Windows-DriverFrameworks-UserMode/Operational  
#>


Get-WinEvent -ListLog 'Microsoft-Windows-Diagnosis-DPS/Operational'
# Results
<#
LogMode   MaximumSizeInBytes RecordCount LogName                                                                                                                                               
-------   ------------------ ----------- -------                                                                                                                                               
Circular             1052672        1901 Microsoft-Windows-Diagnosis-DPS/Operational 
#>

然后使用...

Get-WinEvent -LogName 'YourLogNameOrFullpathHere'

# Example
Get-WinEvent -ListLog 'Microsoft-Windows-Diagnosis-DPS/Operational' | Get-Member
# Results
<#
   TypeName: System.Diagnostics.Eventing.Reader.EventLogConfiguration

Name                           MemberType   Definition                                                              
----                           ----------   ----------                                                              
...                                                       
FileSize                       NoteProperty long FileSize=1052672                                                   
IsLogFull                      NoteProperty bool IsLogFull=False                                                    
LastAccessTime                 NoteProperty datetime LastAccessTime=28-Jul-20 01:15:05                              
LastWriteTime                  NoteProperty datetime LastWriteTime=28-Jul-20 01:15:05                               
...
RecordCount                    NoteProperty long RecordCount=1903                                                   
...
LogFilePath                    Property     string LogFilePath {get;set;}                                           
...
LogMode                        Property     System.Diagnostics.Eventing.Reader.EventLogMode LogMode {get;set;}      
LogName                        Property     string LogName {get;}                                                   
LogType                        Property     System.Diagnostics.Eventing.Reader.EventLogType LogType {get;}          
...
#>

(Get-WinEvent -ListLog 'Microsoft-Windows-Diagnosis-DPS/Operational').LogFilePath

Get-WinEvent -LogName 'Microsoft-Windows-Diagnosis-DPS/Operational' | 
Select-Object -First 3 | 
Format-Table -AutoSize
# Results
<#
   ProviderName: Microsoft-Windows-Diagnosis-DPS

TimeCreated         Id LevelDisplayName Message                                                                                                                                                
-----------         -- ---------------- -------                                                                                                                                                
28-Jul-20 01:24:34 105 Information      Diagnostic module {45de1ea9-10bc-4f96-9b21-4b6b83dbf476} (%windir%\system32\radardt.dll) started troubleshooting scenario {180b3a99-8c39-4f12-b631-2...
28-Jul-20 01:24:34 100 Information      Diagnostic module {45de1ea9-10bc-4f96-9b21-4b6b83dbf476} (%windir%\system32\radardt.dll) detected a problem for scenario {180b3a99-8c39-4f12-b631-20...
28-Jul-20 01:19:34 105 Information      Diagnostic module {45de1ea9-10bc-4f96-9b21-4b6b83dbf476} (%windir%\system32\radardt.dll) started troubleshooting scenario {180b3a99-8c39-4f12-b631-2...
#>

仅供参考 - Get-WinEvent 是已弃用的 Get-EventLog 的替代品。不过,目前两者都可以使用。

日志的物理位置在这里:

(Get-ChildItem -pa 'C:\Windows\System32\winevt\Logs' -Filter '*Microsoft-Windows-Diagnosis-DPS*').FullName
# Results
<#
C:\Windows\System32\winevt\Logs\Microsoft-Windows-Diagnosis-DPS%4Operational.evtx
#>

您想要的 cmdlet 是...

清除事件日志(Microsoft.PowerShell.Management

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/clear-eventlog

Clear-EventLog -LogName 'Microsoft-Windows-Diagnosis-DPS/Operational' -WhatIf -Confirm:$true

相关内容