【发布时间】:2019-12-03 19:07:35
【问题描述】:
如果手动执行,可以将文件传输到 MFT 服务器。 如果设置为作业调度程序,则无法将文件传输到 MFT 服务器。我的脚本有什么问题还是我需要添加额外的凭据?试图找到文件传输的日志,没有运气。我找不到任何日志。
####Load WinSCP .NET assembly
Add-Type -Path "D:\Users\WinSCPnet.dll" -verbose
$session = New-Object WinSCP.Session
$session.SessionLogPath = "D:\Users\SessionLog_$todayLogFile.log"
$sessionOptions = New-Object WinSCP.SessionOptions
$sessionOptions.Protocol = [WinSCP.Protocol]::Sftp
$sessionOptions.HostName = "[linux IP address]"
$sessionOptions.UserName = "[user name share between linux]"
$sessionOptions.PortNumber = "[port number of linux]"
$sessionOptions.Password = ""
$sessionOptions.SshPrivateKeyPath = "D:\Users\Private.ppk"
$sessionOptions.SshHostKeyFingerprint = "ssh-rsa 2048 ......="
$sessionOptions.GiveUpSecurityAndAccepptAnySshHostKey = "true"
try
{
# Open the WinSCP.Session object using the WinSCP.SessionOptions object.
#$session.SessionLogPath = "D:\Users\WinSCPtxt.log"
$session.Open($sessionOptions)
# Open WinSCP.TransferOptions
$transferOptions = New-Object WinSCP.TransferOptions
$transferOptions.FilePermissions = $Null # This is default
$transferOptions.PreserveTimestamp = $False
$transferFile = Get-ChildItem "D:\Users\*.zip" | Where-Object {($_.LastWriteTime -ge (Get-Date).AddDays(-1))}
$destinationMFT = "/Outbox/"
# Upload
$session.PutFiles( $transferFile, $destinationMFT , $False, $transferOptions).Check()
}
#catch { Set-Content -Path 'D:\Users\result.log' $_.Exception.Message }
finally
{
# Disconnect, clean up
$session.Dispose()
}
软件:
- Powershell v2.0
- .Net 4.0
- 独立 WinSCP(无安装权限)
- 窗口服务器 2008
- WinSCP 5.13.9。如果无法加载 WinSCP.dll Loading WinSCP in PowerShell - Could not load file or assembly - This assembly is built by a runtime newer than the currently loaded runtime
- 每天使用任务计划程序运行
【问题讨论】:
-
试过了。似乎没有捕获任何日志>
-
对不起。错字在这里。在实际脚本中是正确的。
-
@MartinPrikryl 我已经标记了文件夹。所以,我目前对该文件夹具有完全访问权限。现在,我摸不着头脑,为什么手动执行能够传输文件,但是当设置任务调度程序时无法传输文件。我读了你的另一篇文章,你怀疑“D:\Users*.zip”必须放“\\computername\Users*.zip”,我试过了,但似乎也不起作用。
-
@MartinPrikryl 手动执行将创建文件。但日志文件中没有写入日志。
-
如果 WinSCP 在创建日志文件时遇到问题,
$session.Open会抛出异常并且不会进行上传。我无法想象你能得到你所描述的行为(不是日志,但上传成功)。
标签: linux powershell job-scheduling winscp window-server