【发布时间】:2018-10-17 09:58:41
【问题描述】:
我的脚本中有一个 .ps1 文件。 在这个脚本中,我有一行:
Start-Process "C:\activatebatch.bat"
如果我直接使用 ps1 文件执行它,一切正常。但是如果我设置一个以 ps1 作为执行程序的 Windows 调度程序,bat 文件不会启动。在那个 bat 文件中,我有一个将文件发送到服务器的 WinSCP。
如何将其设置为从存储在 Windows 调度程序中的 .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"
【问题讨论】:
-
你可以试试
Start-Process cmd.exe -ArgumentList "/C", "C:\activatebatch.bat",看看是否可行。如果您希望 cmd 窗口快速完成,您可以将/C替换为/K。 -
不,它不起作用。在 ps1 中是可以的,和以前一样,我留下了一个参数选项 /K 可用,但是任何 cmd 窗口都会显示,并且服务器上的文件没有被修改。
-
定时任务是如何配置的?您不能将 .ps1 文件作为在那里执行的命令。您必须将
powershell.exe作为命令并将-File C:\path\to\your.ps1作为命令的参数。此外,您可能应该调用Start-Process -Wait或使用呼叫运算符而不是Start-Process。 -
但是 PowerShell 脚本中的其他所有内容(无论是什么)都有效吗?您收到任何错误消息吗?您是否在任务中使用“开始于”?它设置为什么?
-
WinSCP 有一个 .NET 库。你为什么不使用它而不是调用可执行文件?
标签: powershell batch-file winscp windows-task-scheduler