使用“0”个参数调用“Check”时出现异常:“上传文件‘2019-06-11.zip’ 成功,但设置权限和/或时发生错误 时间戳。 如果问题仍然存在,请关闭设置权限或保留时间戳。 或者,您可以打开“忽略权限错误”选项。 没有权限。 错误代码:3 来自服务器的错误消息:该服务器不支持修改操作 文件属性。” 行:12 字符:84 + $session.PutFiles("D:\Users in\*.zip", "/Outbox/").Check <<<< () + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : DotNetMethodException
将文件从 Window Server 传输到 Linux 时,我不断收到上述错误文件。我在使用 WinSCP GUI 时也遇到了同样的错误。我问了MFT团队,他们没有任何设置许可。以下是我的文件传输脚本和我正在使用的软件的一些介绍版本。我因脚本或软件版本太旧而错过的任何内容?我很快就会更新服务器,但还得再等两年。此任务将被设置为调度程序,每天将文件传输到 MFT 服务器。
软件版本:
private.ppk
、WinSCPNet.dll
和 WinSCP.exe
放在同一文件夹中#Load WinSCP .NET assembly
Add-Type -Path "D:\Users\WinSCPnet.dll" -Verbose
$session = New-Object WinSCP.Session
$sessionOptions = New-Object WinSCP.SessionOptions
$sessionOptions.Protocol = [WinSCP.Protocol]::Sftp
$sessionOptions.HostName = "[Linux server IP]"
$sessionOptions.UserName = "[username]"
$sessionOptions.PortNumber = "[linux port number]"
$sessionOptions.Password = ""
$sessionOptions.SshPrivateKeyPath = "D:\Users\bin.ppk"
$sessionOptions.SshHostKeyFingerprint = "ssh-rsa 2048 ....="
try {
# Open the WinSCP.Session object using the WinSCP.SessionOptions object.
$session.Open($sessionOptions)
# Upload
$session.PutFiles("D:\Users\bin\*.zip", "/Outbox/").Check()
} finally {
# Disconnect, clean up
$session.Dispose()
}
错误记录在此处:
https://winscp.net/eng/docs/message_preserve_time_perm
您的服务器不支持更新上传的远程文件的时间戳。所以你需要指示 WinSCP 不要尝试它:
$transferOptions = New-Object WinSCP.TransferOptions
...
$transferOptions.PreserveTimestamp = $False
$session.PutFiles("D:\Users\bin\*.zip", "/Outbox/", $False, $transferOptions).Check()
即使我更新了代码,我仍然收到错误:
这是我的代码:
# Load WinSCP .NET assembly
Add-Type -Path "WinSCPnet.dll"
# Setup session options
$transferOptions = New-Object WinSCP.TransferOptions
$sessionOptions = New-Object WinSCP.SessionOptions -Property @{
Protocol = [WinSCP.Protocol]::Sftp
HostName = = "[Windows server]"
UserName = "[username]"
Password = "[password]"
SshHostKeyFingerprint = "ssh-rsa 1024 ..."
}
$session = New-Object WinSCP.Session
try
{
# Connect
$session.Open($sessionOptions)
$transferOptions.PreserveTimestamp = $False
# Upload
$session.PutFiles("D:\Users\bin\*.zip", "/Outbox/", $False,
$transferOptions).Check()
}
finally
{
# Disconnect, clean up
$session.Dispose()
}