在 PowerShell 中,您可以使用一些命令來監控資料夾中的檔案增加和刪除。雖然 Windows 本身不直接記錄這些操作的詳細日誌,您可以使用以下方法來實現:

suv789發表於2024-09-27

在 PowerShell 中,您可以使用一些命令來監控資料夾中的檔案增加和刪除。雖然 Windows 本身不直接記錄這些操作的詳細日誌,您可以使用以下方法來實現:

1. 使用 Get-ChildItemWhere-Object

您可以列出資料夾中最近新增或刪除的檔案。以下是一個簡單的示例:

powershellCopy Code
$folderPath = "C:\Your\Folder\Path"

# 獲取最近新增的檔案
$recentlyAddedFiles = Get-ChildItem -Path $folderPath | Where-Object { $_.CreationTime -gt (Get-Date).AddDays(-7) }
$recentlyAddedFiles

# 獲取最近刪除的檔案(需手動維護記錄)
# 此方法僅適用於您手動記錄刪除操作

2. 使用事件檢視器

Windows 的事件檢視器可以記錄檔案系統的活動,但需要啟用稽核策略。步驟如下:

  1. 啟用檔案和資料夾稽核

    • 右鍵點選您想要監控的資料夾,選擇“屬性”。
    • 轉到“安全”選項卡,然後點選“高階”。
    • 選擇“稽核”選項卡,點選“新增”並選擇相應的使用者或組。
    • 設定“成功”和“失敗”稽核許可權。
  2. 檢視稽核日誌

    • 開啟事件檢視器(eventvwr.msc)。
    • 導航到 Windows Logs > Security
    • 查詢與檔案建立或刪除相關的事件 ID(例如,檔案建立通常是 4663,檔案刪除也是 4663)。

3. 使用 PowerShell 監控資料夾

您還可以使用 FileSystemWatcher 類來實時監控資料夾的變化:

powershellCopy Code
$folderPath = "C:\Your\Folder\Path"
$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = $folderPath
$watcher.IncludeSubdirectories = $true
$watcher.NotifyFilter = [System.IO.NotifyFilters]'FileName, LastWrite'

# 定義事件處理程式
$onChange = Register-ObjectEvent $watcher 'Changed' -Action { Write-Host "File changed: $($Event.SourceEventArgs.FullPath)" }
$onDelete = Register-ObjectEvent $watcher 'Deleted' -Action { Write-Host "File deleted: $($Event.SourceEventArgs.FullPath)" }
$onCreate = Register-ObjectEvent $watcher 'Created' -Action { Write-Host "File created: $($Event.SourceEventArgs.FullPath)" }

# 啟動監視
$watcher.EnableRaisingEvents = $true

# 保持指令碼執行
while ($true) { Start-Sleep -Seconds 1 }

注意事項

  • 使用事件檢視器的方法需要提前設定稽核,並且可能會導致日誌檔案迅速增大。
  • FileSystemWatcher 可以實時監控,但是如果指令碼終止,監控也會停止。

透過以上方法,您可以監控資料夾中的檔案增加和刪除情況。


相關文章