我正在尝试使用 PowerShell 和 WinSCP .NET 程序集连接到 SFTP 服务器。
代码无法打开会话($session.Open($sessionOptions)
).
在我发现的日志中,
Exception: System.MissingMethodException: Method not found: 'Void System.Threading.EventWaitHandle..ctor(Boolean, System.Threading.EventResetMode, System.String, Boolean ByRef, System.Security.AccessControl.EventWaitHandleSecurity)'. at WinSCP.ExeSessionProcess.TryCreateEvent(String name, EventWaitHandle& ev) at WinSCP.ExeSessionProcess.InitializeConsole() at WinSCP.ExeSessionProcess.Start() at WinSCP.Session.Open(SessionOptions sessionOptions) [2019-03-14 10:59:02.835Z] [0013] Session.Cleanup entering [2019-03-14 10:59:02.835Z] [0013] Terminating process
基本上,它是从$session.Open($sessionOptions)
to $session.Dispose()
并跳过代码的其他部分。
我尝试在 WinSCP 论坛找到解决方案,但没有帮助:
https://winscp.net/forum/viewtopic.php?t=26140 https://winscp.net/forum/viewtopic.php?t=26140
try {
Add-Type -Path "M:\AMA\ztemp_powershell\WinSCPnet.dll"
$sessionOptions = New-Object WinSCP.SessionOptions -Property @{
Protocol = [WinSCP.Protocol]::Sftp
HostName = "abc.xyz.ca"
UserName = "abc_abc"
Password = "*********"
SshHostKeyFingerprint = "ssh-rsa 2048 **********************"
PortNumber = 22
}
$session = New-Object WinSCP.Session
$session.ExecutablePath = "H:\FromLocal\Powershell\WinSCP.exe"
$filelist = Get-ChildItem M:\AMA\ztemp_powershell\sample_files
try {
# $session.DebugLogPath = "M:\AMA\ztemp_powershell\sftp1.log"
$session.Open($sessionOptions)
$transferOptions = New-Object WinSCP.TransferOptions
$transferOptions.TransferMode = [WinSCP.TransferMode]::Binary
foreach ($file in $filelist) {
$transferResult = $session.PutFiles("M:\AMA\ztemp_powershell\sample_files\$file" , "/outbox/", $false, $transferOptions)
foreach ($transfer in $transferResult.Transfers) {
Write-Host "Upload of $($transfer.FileName) succeeded"
}
}
}
finally {
$session.Dispose()
}
exit 0
}
catch {
Write-Host "Error: $_"
exit 1
}
您很可能使用 PowerShell 6 或更高版本(又名 PowerShell Core)。这些版本的 PowerShell 使用 .NET (Core),而不是 .NET Framework。
因此,您必须使用 WinSCP .NET 程序集的 .NET 标准版本。在 - 的里面WinSCP-*-Automation.zip package https://winscp.net/eng/downloads.php#stable_automation, 检查netstandard2.0
folder.
阅读安装 PowerShell 程序集 https://winscp.net/eng/docs/library_powershell#install.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)