Cra*_*eyS 3 .net ssh powershell winscp winscp-net
我正在尝试使用 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
foreach ($transfer in $transferResult.Transfers)
{
Write-Host ("Upload of {0} succeeded" -f $transfer.FileName)
}
}
finally
{
# Disconnect, clean up
$session.Dispose()
}
exit 0
}
catch [Exception]
{
Write-Host ("Error: {0}" -f $_.Exception.Message)
exit 1
}
Run Code Online (Sandbox Code Playgroud)
最可能的解释是 的值SessionOptions.SshHostKeyFingerprint无效,您的代码中没有其他属性经过验证。
使用 WinSCP GUI 函数生成代码模板以获得正确的值。
另请阅读有关自动主机密钥验证的信息。
如果您需要更多帮助,您必须向我们展示您使用的真实价值(它是服务器公钥的指纹,因此它是公开信息,无需隐藏)。