我的脚本中有一个.ps1文件。 在此脚本中,我有一行:
Start-Process "C:\activatebatch.bat"
如果我直接使用ps1文件执行它,则一切正常。但是,如果我将Windows Scheduler设置为ps1作为执行程序,则bat文件不会启动。在该bat文件中,我有一个WinSCP,它将文件发送到服务器。
我如何设置它从Windows Scheduler中存储的.ps1启动.bat?或者如何直接从PowerShell代码执行WinSCP?
我需要它来调用WinSCP将文件发送到服务器-并且选项存储在批处理文件中:
"C:\Program Files (x86)\WinSCP\WinSCP.exe" user:password@IPI.PIP.IP.IP /command ^
"put C:\ss\file.txt /home/scripts/windows/" ^
"exit"
答案 0 :(得分:2)
如果批处理文件中有运行中的WinSCP命令行,则可能需要进行一些更改以使其与PowerShell兼容:
在您的简单脚本中,只有第一点很重要,因此正确的命令是:
& "C:\Program Files (x86)\WinSCP\WinSCP.exe" user:password@IPI.PIP.IP.IP /command `
"put C:\ss\file.txt /home/scripts/windows/" `
"exit"
尽管我会进一步建议您使用winscp.com
instead of winscp.exe
并添加/log
switch to enable session logging进行调试。
也不建议使用命令行参数打开会话。您应该使用open
command(最好还指定一个协议前缀-sftp://
?)。
& "C:\Program Files (x86)\WinSCP\WinSCP.exe" /command `
"open user:password@IPI.PIP.IP.IP" `
"put C:\ss\file.txt /home/scripts/windows/" `
"exit"
WinSCP 5.14 beta实际上可以generate a PowerShell - WinSCP command template for you。
尽管为了更好地控制,建议使用WinSCP .NET assembly from PowerShell。