Это известная проблема в Powershell, когда FileSystemWatcher дважды запускает события.Я пытаюсь обойти это, поскольку я наблюдаю за созданными файлами, а затем отправляю их на принтер.Двойная стрельба означает, что я получаю дублирующиеся распечатки
Я знаю, что этот вопрос задавался ранее, но я полностью новичок, когда дело доходит до Powershell (и, вообще говоря, от сценариев в целом), поэтому некоторые из ответов пошли прямомоя голова
В коде я наблюдаю за папкой, а затем передаю имена подкаталогов в качестве имени принтера для отправки задания.Это связано с тем, что используемое программное обеспечение копирует PDF-файлы из удаленного расположения в эти папки (программное обеспечение не имеет прямого доступа к принтерам из-за Citrix)
### SET FOLDER TO WATCH + FILES TO WATCH + SUBFOLDERS YES/NO
$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = "L:\Label\"
$watcher.Filter = "*.*"
$watcher.IncludeSubdirectories = $true
$watcher.EnableRaisingEvents = $true
### DEFINE ACTIONS AFTER AN EVENT IS DETECTED
$action = { $path = $Event.SourceEventArgs.FullPath
$changeType = $Event.SourceEventArgs.ChangeType
$printer = Split-Path (Split-Path $path -Parent) -Leaf
$logline = "$(Get-Date), $changeType, $path, $printer"
Add-content "c:\prog\log.txt" -value $logline
C:\prog\SumatraPDF.exe -print-to "\\http://srv:631\$printer" $path
}
### DECIDE WHICH EVENTS SHOULD BE WATCHED
Register-ObjectEvent $watcher "Created" -Action $action
while ($true) {sleep 5}
Я ожидаю увидеть печатьКоманда (вызов Суматры) появляется только один раз, когда pdf-файл помещается в папку просмотра