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?