Script: *watch-file.ps1* ======================== watch-file.ps1 Parameters ---------- ```powershell [] This script supports the common parameters: Verbose, Debug, ErrorAction, ErrorVariable, WarningAction, WarningVariable, OutBuffer, PipelineVariable, and OutVariable. ``` Script Content -------------- ```powershell function Watch-File { Param( [Parameter(Mandatory=$false)] [ValidateSet('Created', 'Changed', 'Deleted', 'Renamed', 'Error')] [string]$event ) # Define the path to the file you want to monitor $file = "C:\temp\file.txt" # Define the action that should be taken when the file changes $action = { switch ($event) { "Created" { Write-Host "File created" } "Changed" { Write-Host "File changed" } "Deleted" { Write-Host "File deleted" } "Renamed" { Write-Host "File renamed" } "Error" { Write-Host "Error" } default { Write-Host "Sorry" } } } # Create a new FileSystemWatcher object $watcher = New-Object System.IO.FileSystemWatcher $watcher.Path = Split-Path -Path $file -Parent $watcher.Filter = Split-Path -Path $file -Leaf $watcher.IncludeSubdirectories = $false $watcher.NotifyFilter = [System.IO.NotifyFilters]::LastWrite -bor [System.IO.NotifyFilters]::FileName # Register the event watcher $watcher.EnableRaisingEvents = $true Register-ObjectEvent -InputObject $watcher -EventName $event -Action $action -SourceIdentifier FileChangedEvent # Keep the script running until the user stops it manually while ($true) { Start-Sleep -Seconds 1 } # Unregister the event watcher Unregister-Event -SourceIdentifier FileChangedEvent } ``` *(generated by convert-ps2md.ps1 using the comment-based help of watch-file.ps1 as of 05/19/2024 10:25:27)*