Powershell7 WinSCP新WinSCP会话异常

Powershell7 WinSCP新WinSCP会话异常,powershell,winscp,winscp-net,Powershell,Winscp,Winscp Net,我有一个现有的Powershell脚本,在Powershell 5.1中可以正常工作。安装PowerShell 7后,脚本不再工作,并且在尝试建立WinSCP会话时失败 首先,会话选项是通过新的WinSCPSSessionOption创建的,这些选项将毫无疑问地存储到$sessionOption中 $sessionOption = New-WinSCPSessionOption -HostName $hostName -Credential $credentials -Protocol Ftp

我有一个现有的Powershell脚本,在Powershell 5.1中可以正常工作。安装PowerShell 7后,脚本不再工作,并且在尝试建立WinSCP会话时失败

首先,会话选项是通过新的WinSCPSSessionOption创建的,这些选项将毫无疑问地存储到$sessionOption中

$sessionOption = New-WinSCPSessionOption -HostName $hostName -Credential $credentials -Protocol Ftp
会话安装程序运行时,Powershell 7中会引发异常:

$session = New-WinSCPSession -SessionOption $sessionOption
将引发以下异常:

Line |
 |      $session = New-WinSCPSession -SessionOption $sessionOption
 |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | Exception calling "Open" with "1" argument(s): "Method not found: 'Void
 | System.Threading.EventWaitHandle..ctor(Boolean, System.Threading.EventResetMode, System.String,
 | Boolean ByRef, System.Security.AccessControl.EventWaitHandleSecurity)'."

如果您不知道,因为
PS-Core
更适合跨平台使用,所以他们删除了大多数windows独占cmdlet。不,PS Core不会取代powershell 5,这就是他们尚未将其添加到windows计算机的原因。这就是PS Core从PS 5中删除3000多个cmdlet和70个模块的原因(7678>2589个cmdlet,136>57个模块)。脚本无法在PS Core中工作的原因是因为
新的WinSCPSSessionOption
更多地针对Windows,而不是跨平台环境。该函数的某些部分是Windows独占的,因此无法工作。再次检查该函数是否存在可能由删除cmdlet或类型引起的确切错误。我假设您使用的
$FtpMode=(新对象-TypeName WinSCP.FtpMode)
可能会导致错误,因为在pscore中删除了
WinSCP
类型。WinSCP.NET程序集本身在.NET核心(Windows)上工作。但是您必须使用.dll的“netstandard2.0”版本。出于某种原因,包装器正在加载“net40”版本考虑一下这一点。谢谢你的NekMuSuMu和Martin Prikryl的快速回复。我必须制定并确定行动方案,但我感谢您的帮助和推荐。