powershell - 电源外壳。写事件日志
问题描述
我有一个脚本,它将一些文件从文件夹移动到临时文件夹,将它们存档并在最后清理临时文件夹。
我希望我的脚本也能在 win-event 日志中写入有关它的信息。
这是我的脚本:
Get-ChildItem C:\Users\Administrator\Desktop\test1\ | Where-Object {$_.LastWriteTime -lt "09/24/2018 09:00 PM"} | Move-Item -Destination C:\Users\Administrator\Desktop\data\
Compress-Archive -path C:\Users\Administrator\Desktop\data\ -CompressionLevel Optimal -DestinationPath C:\Users\Administrator\Desktop\data1\test.zip
Remove-Item C:\Users\Administrator\Desktop\data\*
我想添加代码,它将任何错误的事件写入 win-event 日志。
解决方案
根据评论,您可以使用Write-EventLog
写入 Windows 事件日志。如果您想编写在这些命令期间发生的任何错误,那么您可能希望使用 aTry..Catch
来捕获任何错误并处理它们:
Try {
$PrevEAP = $ErrorActionPreference
$ErrorActionPreference = 'Stop'
Get-ChildItem C:\Users\Administrator\Desktop\test1\ | Where-Object {$_.LastWriteTime -lt "09/24/2018 09:00 PM"} | Move-Item -Destination C:\Users\Administrator\Desktop\data\
Compress-Archive -path C:\Users\Administrator\Desktop\data\ -CompressionLevel Optimal -DestinationPath C:\Users\Administrator\Desktop\data1\test.zip
Remove-Item C:\Users\Administrator\Desktop\data\*
Catch {
Write-Error $_
$ErrorEvent = @{
LogName = 'Application'
Source = 'YourScript'
EventID = 123
EntryType = 'Information'
Message = $_
}
Write-EventLog @ErrorEvent
}
Finally {
$ErrorActionPreference = $PrevEAP
}
为了使异常(错误)触发Try..Catch
异常,需要终止(与非终止相比)。-ErrorAction
您可以通过将 cmdlet 设置为来强制 cmdlet 执行终止错误Stop
,或者您可以通过$ErrorActionPreference
变量全局执行此操作。
在 catch 块中,错误保存在特殊变量中:$_
. 所以我们Write-Error
仍然可以将其写入控制台(如果您愿意),然后我们将Write-EventLog
其写入事件日志。
根据您的需要自定义 LogName、Source、EventID、Information 等。注意 LogName 需要是现有日志之一,条目类型需要是有效条目类型之一(信息、警告、错误)。
推荐阅读
- mysql - 获取过去 30 天内每天的查询结果
- swift - UserDefaults(suiteName:) 不在应用程序和扩展程序之间传播
- node.js - MongooseServerSelectionError:连接 ECONNREFUSED
- c# - 创建新标签并管理它们 - Selenium
- angular - Angular 库 - 使用 APP_INITIALIZER 将参数传递给服务
- spring-boot - 在 spring colud 合同中定义请求主体
- google-cloud-platform - GCloud AI Notebook Efficient 实例虚拟机无通知重启
- python - Python Selenium bot 查看 Instagram 故事 | 如何单击具有活跃故事的人的个人资料?
- html - 2之间的白色间隙元素和原因
元素的边距有一个默认值
我正在尝试通过在线课程创建“我的网站”页面。我是一个超级初学者,任何用最简单的词语和术语进行的解释都将不胜感激,这样我就可以理解而不会太技术化。我再次尝试在此处尽我最大的能力解释这个问题,而不是过于技术化。
在这里,我遇到了一个问题,我可以看到两个称为“顶部容器”和“中间容器”的元素之间存在白色间隙。见图1。