我正在尝试使用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代码行。
基本上,这是PowerShell等效的带有批处理文件的常见WinSCP问题:https://winscp.net/eng/docs/faq_batch_file#newline_escaping
谢谢,确实是问题所在。以下是将来所有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