You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求修改PowerShell代码:将文件监控日志保存至.xlsx文件

解决方案

要将监控日志保存为XLSX格式,PowerShell没有原生的XLSX写入命令,我们可以使用ImportExcel模块(PowerShell生态中处理Excel文件的常用工具)来实现。以下是具体修改步骤和完整代码:

1. 安装ImportExcel模块

打开PowerShell(建议以管理员身份运行),执行以下命令完成模块安装:

# 首次安装需先信任PowerShell Gallery仓库
Set-PSRepository -Name PSGallery -InstallationPolicy Trusted
# 将模块安装到当前用户目录
Install-Module -Name ImportExcel -Scope CurrentUser

2. 修改后的完整监控代码

### SET FOLDER TO WATCH + FILES TO WATCH + SUBFOLDERS YES/NO
$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = "C:\Users\admin\Desktop\iguaracu_pr"
$watcher.IncludeSubdirectories = $true
$watcher.EnableRaisingEvents = $true  

### DEFINE ACTIONS AFTER AN EVENT IS DETECTED
$action = { 
    $fileName = $Event.SourceEventArgs.Name
    # 保留原逻辑:移除文件名最后4个字符
    $cleanedFileName = $fileName -replace ".{4}$"
    $changeType = $Event.SourceEventArgs.ChangeType
    # 结构化日志数据,方便Excel表头识别
    $logEntry = [PSCustomObject]@{
        事件类型 = $changeType
        文件名 = $cleanedFileName
        发生时间 = Get-Date  # 新增时间戳,提升日志实用性
    }
    # 写入XLSX文件,自动追加行,首次运行自动创建表头
    $logPath = "C:\Users\admin\Pictures\Duvidas\log.xlsx"
    $logEntry | Export-Excel -Path $logPath -Append -AutoSize
}    
### DECIDE WHICH EVENTS SHOULD BE WATCHED 
Register-ObjectEvent $watcher "Created" -Action $action
Register-ObjectEvent $watcher "Changed" -Action $action
Register-ObjectEvent $watcher "Deleted" -Action $action
Register-ObjectEvent $watcher "Renamed" -Action $action
while ($true) {sleep 5}

关键修改说明

  • 替换原CSV写入逻辑,用[PSCustomObject]结构化日志数据,让Excel表头更清晰易读
  • 新增发生时间字段,记录事件具体时间,方便后续排查
  • 使用Export-Excel的-Append参数实现日志追加写入:首次运行自动创建带表头的XLSX文件,后续运行直接追加新行
  • -AutoSize参数自动调整Excel列宽,优化阅读体验

内容的提问来源于stack exchange,提问作者Rodrigo Lunardelli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 20:02:38