carnap64 0 Geschrieben 21. Juni Melden Teilen Geschrieben 21. Juni (bearbeitet) Hallo Forum, ich habe folgendes Ziel: Ein Skript soll auf meinem Windowsrechner dauernd im Hintergrund laufen und eine Netzwerkfreigabe (in meinem Fall: \\ syn\Public) auf Dateizugriffe überwachen (Datei erstellen, verändern, löschen). Jeder registrierte Dateizugriff soll in einer Logdatei protokolliert werden. Dazu habe ich mit ChatGPT folgendes Skript generieren lassen (die Variablen sind bereits angepasst): # Variablen definieren $NetworkSharePath = "\\syn\Public" $LogFilePath = "C:\Users\carnap\Documents\Konfiguration\Watch_SYN\WatchPublicLog.txt" # Funktionsdefinition zum Schreiben ins Logfile function Write-Log { param ( [string]$Message ) $timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss" $logMessage = "$timestamp - $Message" Add-Content -Path $LogFilePath -Value $logMessage } # Ereignisüberwachung einrichten $filter = @{ Path = $NetworkSharePath Filter = '*' NotifyFilter = [System.IO.NotifyFilters]'FileName, LastWrite, CreationTime, DirectoryName' } # FileSystemWatcher erstellen $watcher = New-Object System.IO.FileSystemWatcher -Property $filter # Ereignisaktionen definieren $watcher.Created += { Write-Log "Datei erstellt: $($_.FullPath)" } $watcher.Changed += { Write-Log "Datei geändert: $($_.FullPath)" } $watcher.Deleted += { Write-Log "Datei gelöscht: $($_.FullPath)" } $watcher.Renamed += { Write-Log "Datei umbenannt: $($_.OldFullPath) zu $($_.FullPath)" } # Überwachung starten $watcher.EnableRaisingEvents = $true # Überwachung in eine Endlosschleife setzen try { Write-Log "Überwachung gestartet." while ($true) { Start-Sleep -Seconds 5 } } catch { Write-Log "Fehler: $($_.Exception.Message)" } finally { Write-Log "Überwachung gestoppt." $watcher.EnableRaisingEvents = $false } Bitte nicht schimpfen, ich kann nicht programmieren. War nur mal so eine Idee, das mit ChatGPT zu versuchen ... Danach öffne ich die Powershell-Konsole mit erweiterten Rechten und navigiere ins Verzeichnis, in dem das Skript liegt: cd C:\Users\carnap\Documents\Konfiguration\Watch_SYN Danach starte ich das Skript: ".\WatchPublic.ps1" Test: Ich habe auf die Netzwerk-Freigabe einige Dateien rüberkopiert. Erwartetes Verhalten: Es wird eine Logdatei in C:\Users\carnap\Documents\Konfiguration\Watch_SYN erstellt und die Dateizugriffe reingeschrieben. Tatsächliches Verhalten: Nichts von dem passiert. Keine Fehlermeldung, gar nichts. Übersehe ich etwas? Kann dieses Skript funktionieren? bearbeitet 21. Juni von carnap64 Zitieren Link zu diesem Kommentar
NilsK 2.955 Geschrieben 21. Juni Melden Teilen Geschrieben 21. Juni Moin, ich habe nur schnell geguckt und bin kein PS-Spezi, aber mein Verdacht ist, dass dein Skript in einer Endlosschleife 5 Sekunden schläft. Gruß, Nils Zitieren Link zu diesem Kommentar
cj_berlin 1.329 Geschrieben 21. Juni Melden Teilen Geschrieben 21. Juni Moin, Du suchst Register-ObjectEvent (Microsoft.PowerShell.Utility) - PowerShell | Microsoft Learn 1 Zitieren Link zu diesem Kommentar
daabm 1.366 Geschrieben 21. Juni Melden Teilen Geschrieben 21. Juni War da nicht was, daß Code von ChatGPT i.d.R. "halbfertig" ist? 1 Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.