我正试图使用WinSCP创建一个PowerShell脚本来自动进行SFTP传输。我可以连接并进行简单的传输,但我只想传输昨天的文件。为此,我需要一个文件掩码,但我无法实现。
下面是我的代码。我把这个脚本放在Notepad++中,保存为PowerShell脚本并运行它。SFTP连接部分工作,因为我已经用它来抓取SFTP上的所有文件。所以我确定是文件屏蔽部分。
& "C:\Program Files (x86)\WinSCP\WinSCP.com" `
/log="\\blah\blah\users\vmedhe\thing.log" /ini=nul `
/command `
"open sftp://username:password@sftpsite -hostkey=`"`"not real host key=`"`"" `
"cd /" `
"lcd C:\Test_case" `
"get -filemask=`"`">yesterday`"`" shares" `
"get -filemask=`"`">yesterday`"`" *.*" `
"exit"
$winscpResult = $LastExitCode
if ($winscpResult -eq 0)
{
Write-Host "Success"
}
else
{
Write-Host "Error"
}
exit $winscpResult
不幸的是,我一直收到错误。
At C:\Powershell_Scripts\mXpress_main.PS1:9 char:2
+ "get -filemask=`"`">yesterday`"`" *.*" `
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Unexpected token '"get -filemask=`"`">yesterday`"`" *.*"' in expression or statement. At C:\Powershell_Scripts\mXpress_main.PS1:10 char:5
+ "exit"
+ ~~~~~~ Unexpected token '"exit"' in expression or statement.
+ CategoryInfo : ParserError: (:) [], ParseException
+ FullyQualifiedErrorId : UnexpectedToken
"我的文件掩码有问题,但我不确定是什么问题 任何帮助将是真棒。
这不是文件掩码的问题。- 你在文件的(似乎)结尾处的回车键后面有一个空格。lcd
行。
所以回车键逃过了空格,而没有逃过换行。因此, get
行被解释为一个新的PowerShell代码行。
基本上就相当于这个WinSCP常见的批处理文件问题的PowerShell。https:/winscp.netengdocsfaq_batch_file#newline_escaping。
虽然在一般情况下。在PowerShell中,你应该使用WinSCP .NET程序集。.
谢谢,这确实是问题。以下是未来所有google的最终代码。
& "C:\Program Files (x86)\WinSCP\WinSCP.com" `
/log="\\blah\blah\users\fake\thing.log" /ini=nul `
/command `
"open sftp://username:password@sftpname/ -hostkey=`"`"junk host key=`"`"" `
"cd /" `
"lcd C:\test_area" `
"get -filemask=`"`">yesterday`"`" shares" `
"get -filemask=`"`">yesterday`"`" *.*" `
"exit"
$winscpResult = $LastExitCode
if ($winscpResult -eq 0)
{
Write-Host "Success"
}
else
{
Write-Host "Error"
}
exit $winscpResult