Я сделал небольшой скрипт-оболочку PowerShell для модуля WinSCP, который соответствует моим потребностям. Как и в примере для синхронизации локальных и удаленных папок, в моем журнале используется событие передачи файла сеансовые события.
$fileTransferedEvent = {Receive-FileTransferredEvent $_}
$session.add_FileTransferred($fileTransferedEvent)
В примере сеанс удаляется после его завершения. Моя логика держит сеанс открытым до тех пор, пока я не решу закончить с ним, чтобы я мог использовать тот же сеанс в другом вызове командлета.
Это создает проблему, если другие командлеты (или даже повторный вызов одного и того же) также используют add_FileTransferred()
. Событие добавляется снова, что приводит к X-кратному выходу, где X - это количество вызовов метода.
Я нашел партнерский метод под названием remove_FileTransferred()
, но не знаю, как его использовать
Name MemberType Definition
---- ---------- ----------
add_FileTransferred Method void add_FileTransferred(WinSCP.FileTransferredEventHandler value)
remove_FileTransferred Method void remove_FileTransferred(WinSCP.FileTransferredEventHandler value)
Они оба принимают одни и те же значения, поэтому я подумал, что, может быть, я мог бы передать ему определение обработчика, но это, похоже, не работает, т.е. $session.remove_FileTransferred($fileTransferedEvent)
не выполнил задание. Тоже не ошибается.
Как удалить обработчики событий передачи файлов для Winscp.Session
объектов?