我正在尝试使用 PowerShell 使用 WinSCP 自动传输文件。我已经安装了 .NET 程序集。在我添加的代码中,我为了隐私取出了凭据和主机名,并且我还使用了WinSCPnet.dll. 这是我得到的错误:
错误:提供的值无效,或属性为只读。更改值,然后重试。
我$sessionOptions在第 5 行定义了这个。关于我可以做些什么来运行它的任何想法?
try
{
Add-Type -Path "WinSCPnet.dll"
$sessionOptions = New-Object WinSCP.SessionOptions -Property @{
Protocol = [WinSCP.Protocol]::Sftp
HostName = "HostName"
UserName = "UserName"
Password = "Password"
SshHostKeyFingerprint = "ssh-rsa 2048 Fingerprint here"
}
$session = New-Object WinSCP.Session
try
{
# Connect
$session.Open($sessionOptions)
# Upload files
$transferOptions = New-Object WinSCP.TransferOptions
$transferOptions.TransferMode = [WinSCP.TransferMode]::Binary
$transferResult =
$session.PutFiles("Source", "Destination", $False, $transferOptions)
# Throw on any error
$transferResult.Check()
# Print results …Run Code Online (Sandbox Code Playgroud) 在WinSCP的当前稳定版本中,似乎使用SshHostKeyFingerprint是强制性的,没有这种方法就无法连接到SFTP服务器SessionOptions.我可以看到旁路的能力被添加到beta(5.2)但是我想知道是否可以在没有这个指纹的情况下进行连接.
我正在开发一个应用程序,在其中使用 WinSCP .NET 程序集(版本 5.5.0.3839)下载文件
我下载文件的代码如下
public bool ReceiveFile(string ftpFilePath,out String downloadedFileName, String DestinationPath)
{
bool sendingStatus = false;
downloadedFileName = string.Empty;
try
{
if (sessionOptions != null)
{
using (Session session = new Session())
{
// Connect
bool isSessionOpened = OpenSession(session);
if (isSessionOpened)
{
// Upload files
TransferOptions transferOptions = new TransferOptions();
transferOptions.TransferMode = TransferMode.Automatic;
TransferOperationResult transferResult;
transferResult = session.GetFiles(ftpFilePath, DestinationPath, false, transferOptions);
// Throw on any error
transferResult.Check();
// Print results
foreach (TransferEventArgs transfer in transferResult.Transfers)
{
sendingStatus …Run Code Online (Sandbox Code Playgroud) 我想将文件上传到服务器的主目录(根目录),而不是文件夹.
我该怎么做?(使用C#)
transferResult = session.PutFiles(path, "\\", true, transferOptions);
Run Code Online (Sandbox Code Playgroud)
如果我使用\\了remotePath,上传的文件改名.
我使用WinSCP .NET库通过使用PutFiles(..)和从SFTP服务器上载/下载文件GetFiles(..).
有没有办法在上传/下载此服务器的文件时查看进度?例如,获取已下载的文件大小的百分比.
谢谢,迈克尔
enter code here我将文件放在远程FTP服务器上时遇到问题。
我正在使用带有C#的WinSCP .NET程序集。
我能够连接到FTP服务器,但是当我尝试使用session.PutFile(local,remote)它时,它会跳到transferResult.Check()一个错误:
{WinSCP.SessionRemoteException:传输文件'C:\ testfile.txt时出错。---> WinSCP.SessionRemoteException:将文件复制到远程端失败。无法更改为“ / ftp:/”;找不到“ ftp:”。
请在下面找到我的代码。
private static void transferWinSCP()
{
string userName = myUsername;
string password = myPassword;
string path = ftp://hostname.com/f/fofd671e-0eee-4c23-932d-4ba32c938c8f;
string logPath = ConfigurationManager.AppSettings["LogPath"];**
try
{
SessionOptions sessionOptions = new SessionOptions
{
Protocol = Protocol.Ftp,
HostName = "hostname.com",
PortNumber = 990,
UserName = userName,
Password = password,
FtpSecure = FtpSecure.Implicit,
FtpMode = FtpMode.Passive,
TlsHostCertificateFingerprint = "xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx"
};
using (Session session = new Session())
{
session.SessionLogPath …Run Code Online (Sandbox Code Playgroud) 我想在用户第一次访问服务器时获取指纹,然后保存该指纹(这不会是问题,我可以做到这一点)。我的问题是,应该有一种方法可以调用ScanFingerprint(),但当我搜索它时,该方法没有显示。
https://winscp.net/eng/docs/library_session_scanfingerprint#parameters
这就是我发现的,但该方法没有出现,知道如何做到这一点吗?
老实说,我还没有为此编写任何代码,因为我正在尝试找出该方法在哪里。但我有这个,我打算用它来设置SshHostKeyFingerprint属性
TransferOptions = new TransferOptions();
SessionOptions = new SessionOptions();
MySession = new Session();
SessionOptions.HostName = InterfaceConnection.Host;
SessionOptions.UserName = InterfaceConnection.UserID;
SessionOptions.Password = InterfaceConnection.Password;
SessionOptions.PortNumber = InterfaceConnection.Port;
if (string.Compare(protocol.ProtocolUsed, "FTP", true) == 0)
SessionOptions.Protocol = WinSCP.Protocol.Ftp;
else if (string.Compare(protocol.ProtocolUsed, "SFTP", true) == 0)
{
SessionOptions.Protocol = WinSCP.Protocol.Sftp;
SessionOptions.SshHostKeyFingerprint = protocol.FingerPrint;
SessionOptions.SshPrivateKeyPath = "C:\\TestFiles\\SshKeys\\MyLocalSSHKey";
}
Run Code Online (Sandbox Code Playgroud) 使用FTPS(安全)使用WinSCP(.NET程序集)将文件发送到服务器需要什么?
我一直在查看他们的文档,并且在某些方面不太清楚,比如TlsHostCertificateFingerprint或TlsClientCertificatePath.
我已经能够通过FTP和SFTP发送文件没有问题,但这一切都让我无法理解.
我正在使用 SFTP 将文件传输到远程服务器,但我不断收到
未设置 SessionOptions.SshHostKeyFingerprint。
我从 WinSCP WinSCP .NET Assembly and COM Library引用了此文档
我究竟做错了什么?请参阅下面的脚本:
try
{
# Load WinSCP .NET assembly
Add-Type -Path "WinSCPnet.dll"
# Setup session options
$sessionOptions = New-Object WinSCP.SessionOptions -Property @{
Protocol = [WinSCP.Protocol]::Sftp
HostName = "psftp-nesam.ms.com"
UserName = "test"
Password = "MSR4sssssnd5"
SshHostKeyFingerprint = "ssh-rsa 1024 +3t0xkOMWqfA7IaH0itjW/w7FQN+EtVyLDMTXk+D300=
ssh-rsa 1024 23:6f:82:11:ec:b1:1a:82:95:1b:ed:7e:96:24:d0:11"
}
$session = New-Object WinSCP.Session
try
{
# Connect
$session.Open($sessionOptions)
# Upload files
$transferOptions = New-Object WinSCP.TransferOptions
$transferOptions.TransferMode = [WinSCP.TransferMode]::Binary
$transferResult =
$session.PutFiles("E:\CMBPAID\BPAID0224_122700.csv", "/NESAMSCARIMED", $False, $transferOptions) …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用以下代码上传文件,但在下面收到错误.
一些注意事项:我正在使用Windows 7.使用CrushFTP SFTP服务器,能够使用FileZilla和WinSCP客户端连接,但通过代码它是噩梦.
错误/例外:
mscorlib.dll中发生了'System.IO.IOException'类型的第一次机会异常
附加信息:进程无法访问文件'C:\ Users\xxxxxxx\AppData\Local\Temp\wscp0D64.036B20B7.tmp',因为它正由另一个进程使用.
我的连接代码如下
SessionOptions sessionOptions = new SessionOptions
{
Protocol = Protocol.Sftp,
HostName = "127.0.0.1", //hostname e.g. IP: 192.54.23.32, or mysftpsite.com
UserName = "xxxxxx",
Password = "yyyyyy",
PortNumber = zzzzz, //some number
SshHostKeyFingerprint = "ssh-rsa 1024 ::::04:85:3b:7a::::::::"
};
using (Session session = new Session())
{
session.Open(sessionOptions); //Attempts to connect to your sFtp site
//Get Ftp File
TransferOptions transferOptions = new TransferOptions();
transferOptions.TransferMode = TransferMode.Binary; //The Transfer Mode -
// Automatic, Binary, or Ascii
transferOptions.FilePermissions …Run Code Online (Sandbox Code Playgroud) 我正在使用一个名为WinSCPnet.dll. 该代码仅在我将其设置AssemblyFileVersion为与WinSCP.exe安装位置相同的版本时才有效。
我得到了这个例外:
C:\Program Files (x86l\WinSCP\WinSCP.exe (5.15.1.0) 的版本与此程序集的版本不匹配 C:\Users\burkarty\source\repos\UAReport3\UAReport3\bin\Debug\UAReport3.exe (0.0.0.0)。
如何独立于 WinSCP 版本运行我的代码?
我搜索了一个类似的问题,但没有对我有用。
winscp ×11
winscp-net ×11
c# ×8
sftp ×5
ssh ×4
.net ×2
ftp ×2
powershell ×2
public-key ×2
ftps ×1