【发布时间】:2017-11-03 02:08:57
【问题描述】:
我为适合我需要的 WinSCP 模块制作了一个小型 PowerShell 包装脚本。 Like in the example for synchronizing local and remote folders 我的使用文件传输事件来记录会话事件。
$fileTransferedEvent = {Receive-FileTransferredEvent $_}
$session.add_FileTransferred($fileTransferedEvent)
该示例在完成后处理会话。我的逻辑保持会话打开,直到我选择完成它,以便我可以在其他 cmdlet 调用中使用相同的会话。
如果其他 cmdlet(甚至再次调用相同的 cmdlet)也使用 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 对象上的文件传输事件处理程序?
【问题讨论】:
标签: powershell ftp winscp powershell-5.0 winscp-net