Powershell 脚本仅在手动调用时触发进程。通过计划任务触发时超时
Powershell script triggers process only when invoked manually. Timing out when triggered via Scheduled Task
在 Windows 2012 R2 服务器上有一个 Powershell 脚本,我可以手动调用它以在某些 EXE 上启动进程,这很好用。
但是当尝试通过计划任务(调用相同的脚本)触发它时,脚本中的 start-process
不会触发或完成。导致任务调度程序因超过超时阈值而终止任务。
这是脚本的核心部分:
$exe = "c:\some\app.exe"
$arguments = "-user me -pwd secret"
$process = Start-Process $exe -ArgumentList $arguments -PassThru -Wait
return $process
有什么方法可以让我深入了解 start-process
正在做什么,或者为什么相同的脚本在手动调用而不是以编程方式调用时有效?
我要强调的是,从定时任务调用脚本的方式是没有问题的!脚本触发是因为相应的日志文件已填充。
非常感谢任何对此的见解或帮助!
自从我发现问题后快速更新。事实证明,它与 powershell 脚本或计划任务本身无关...
在脚本 运行 所在的机器上,有一个映射为 z:\
驱动器的网络共享。我用它来保存日志。现在显然 mapping/mounting 的处理方式不同,具体取决于脚本是以交互方式调用还是以编程方式调用,因为在后一种情况下,网络路径 \network\share\folder1
的结果似乎没有成功,但是没有什么可抱怨的关于它,这个过程只是默默地没有开始。但是,如果我将日志指向物理本地路径或显式完整网络路径本身,则没有问题 运行 脚本。
吸取教训,永远不要相信 OS' 网络路径的驱动器映射 :D
干杯
在 Windows 2012 R2 服务器上有一个 Powershell 脚本,我可以手动调用它以在某些 EXE 上启动进程,这很好用。
但是当尝试通过计划任务(调用相同的脚本)触发它时,脚本中的 start-process
不会触发或完成。导致任务调度程序因超过超时阈值而终止任务。
这是脚本的核心部分:
$exe = "c:\some\app.exe"
$arguments = "-user me -pwd secret"
$process = Start-Process $exe -ArgumentList $arguments -PassThru -Wait
return $process
有什么方法可以让我深入了解 start-process
正在做什么,或者为什么相同的脚本在手动调用而不是以编程方式调用时有效?
我要强调的是,从定时任务调用脚本的方式是没有问题的!脚本触发是因为相应的日志文件已填充。
非常感谢任何对此的见解或帮助!
自从我发现问题后快速更新。事实证明,它与 powershell 脚本或计划任务本身无关...
在脚本 运行 所在的机器上,有一个映射为 z:\
驱动器的网络共享。我用它来保存日志。现在显然 mapping/mounting 的处理方式不同,具体取决于脚本是以交互方式调用还是以编程方式调用,因为在后一种情况下,网络路径 \network\share\folder1
的结果似乎没有成功,但是没有什么可抱怨的关于它,这个过程只是默默地没有开始。但是,如果我将日志指向物理本地路径或显式完整网络路径本身,则没有问题 运行 脚本。
吸取教训,永远不要相信 OS' 网络路径的驱动器映射 :D
干杯