Overvåg mappeændringer i Windows med PowerShell uden ekstra software

Hvordan kan man i Windows overvåge en mappe for filændringer og nye filer, og køre en kommando ved ændringer, uden at installere ekstra software?

For at overvåge en mappe for filændringer og nye filer i Windows uden at installere ekstra software, kan du bruge PowerShell, som er indbygget i Windows og kan udføre kommandoer baseret på filsystemændringer.

Hvordan kan man i Windows overvåge en mappe for filændringer og nye filer, og køre en kommando ved ændringer, uden at installere ekstra software?

For at overvåge en mappe for filændringer og nye filer i Windows uden at installere ekstra software, kan du bruge PowerShell. PowerShell er et kraftfuldt værktøj, der er indbygget i Windows, og det kan bruges til at overvåge filsystemændringer og udføre kommandoer baseret på disse ændringer.

Trin til at overvåge en mappe med PowerShell

  1. Åbn PowerShell som administrator:
    • Tryk på Windows-tasten og skriv PowerShell.
    • Højreklik på Windows PowerShell og vælg Kør som administrator.
  2. Definer den mappe, du vil overvåge, og den kommando, du vil køre ved ændringer:
    • Erstat C:\Path\To\Folder med stien til den mappe, du vil overvåge.
    • Erstat Your-Command-Here med den kommando, du vil køre ved ændringer.
  3. Indsæt og kør følgende PowerShell-script:
    
    $folder = "C:\Path\To\Folder"
    $filter = "*.*"
    
    $fsw = New-Object IO.FileSystemWatcher $folder, $filter
    $fsw.IncludeSubdirectories = $false
    $fsw.EnableRaisingEvents = $true
    
    $action = {
        $path = $Event.SourceEventArgs.FullPath
        $changeType = $Event.SourceEventArgs.ChangeType
        $logline = "$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss') - $changeType - $path"
        Add-Content "C:\Path\To\LogFile.txt" -Value $logline
        # Kør din kommando her
        Your-Command-Here
    }
    
    Register-ObjectEvent $fsw "Changed" -Action $action
    Register-ObjectEvent $fsw "Created" -Action $action
    Register-ObjectEvent $fsw "Deleted" -Action $action
    Register-ObjectEvent $fsw "Renamed" -Action $action
    
    # Hold PowerShell-vinduet åbent
    while ($true) { Start-Sleep -Seconds 1 }
    
        

Forklaring af scriptet

  • $folder: Definerer stien til den mappe, der skal overvåges.
  • $filter: Angiver, hvilke filer der skal overvåges. *.* betyder alle filer.
  • New-Object IO.FileSystemWatcher: Opretter en ny FileSystemWatcher-instans for at overvåge filændringer.
  • $fsw.IncludeSubdirectories: Angiver, om undermapper også skal overvåges. Sæt til $true for at inkludere undermapper.
  • $fsw.EnableRaisingEvents: Aktiverer overvågning af filsystemændringer.
  • $action: Definerer den handling, der skal udføres, når en filændring registreres. Her logges ændringen til en logfil, og en brugerdefineret kommando køres.
  • Register-ObjectEvent: Registrerer hændelser for filændringer (oprettet, ændret, slettet, omdøbt) og knytter dem til den definerede handling.
  • while ($true) { Start-Sleep -Seconds 1 }: Holder PowerShell-vinduet åbent, så scriptet kan fortsætte med at overvåge mappen.

Dette script giver dig mulighed for at overvåge en mappe for filændringer og udføre en specifik kommando, når en ændring registreres, alt sammen uden at installere ekstra software.