Ich versuche, diese Abfrage in Powershell auszuführen, aber wenn ich es mit dem aktuellen $MonitorFolder
als \\\vavm\CINICO\Incoming
ausführen meine Arbeit funktioniert nicht beim Hinzufügen einer Datei in den Ordner. Wenn ich die Variable $MonitorFolder
zu C:\Users\RickG\Desktop\Test Reports
ändere, funktioniert mein Code gut, wenn ich die Datei dem Ordner hinzufüge. Also, wie überwache ich den Pfad \\vavm\CINICO\Incoming
, wenn Dateien zum Ordner hinzugefügt werden.Monitor Netzwerkordner für Dateien
Hier ist ein Ausschnitt aus meinem ersten Teil des Codes, der den Ordner überprüft:
$MonitorFolder = "\\vavm\CINICO\Incoming"
$MonitorStopFile = "monitor.die"
$smtpServer = "mail.test.org"
$smtpFrom = "[email protected]"
$smtpTo = "[email protected]"
$SourceID = "MonitorFiles"
$smtpSubject = "New file arrived in $($MonitorFolder)"
$Query = @"
SELECT * FROM __InstanceCreationEvent WITHIN 10
WHERE targetInstance ISA 'Cim_DirectoryContainsFile'
AND targetInstance.GroupComponent = 'Win32_Directory.Name="$($MonitorFolder.Replace("\", "\\\\"))"'
"@
LÖSUNG:
$MonitorFolder = "\\vavm\CINICO\incoming"
$MonitorStopFile = "monitor.die"
$smtpServer = "mail.test.org"
$smtpFrom = "[email protected]"
$smtpTo = "[email protected]"
$smtpSubject = "New file arrived in $($MonitorFolder)"
$SourceID = "MonitorFiles"
$IncomingFiles = Get-ChildItem $MonitorFolder
$smtp = New-Object -TypeName "Net.Mail.SmtpClient" -ArgumentList $smtpServer
$watcher = New-Object System.IO.FileSystemWatcher $MonitorFolder
#Files only. Default is files + directory
$watcher.NotifyFilter = [System.IO.NotifyFilters]'FileName,LastWrite'
$newFileSubscription = Register-ObjectEvent -InputObject $watcher -EventName Created -SourceIdentifier NewFileCreated -Action {
Write-Host "New file named '$($Event.SourceEventArgs.Name)' arrived in $($MonitorFolder)"
$smtpBody += "`n[$(Get-Date -Format HH:mm:ss)]`tNew file named '$($Event.SourceEventArgs.Name)' arrived in $($MonitorFolder)"
if($Event.SourceEventArgs.Name -eq $MonitorStopFile) {
Write-Host "Monitoring stopped"
#Stop monitoring
Unregister-Event -SubscriptionId $newFileSubscription.Id
#Dispose FileSystemWatcher
$watcher.Dispose()
}
$smtp.Send($smtpFrom, $smtpTo, $smtpSubject, $smtpBody)
}
was meinst du mit "funktioniert nicht"? erhalten Sie einen Fehler? –
Das Beispiel ist unvollständig. Sie registrieren nie den WMI-Ereignissubscriber –
Ich registriere das wmi-Ereignis im vollen Code, ist also nur ein Schnipsel – SikRikDaRula