首页 > 解决方案 > Powershell 脚本仅在手动调用时才会触发进程。通过计划任务触发时超时

问题描述

在 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正在做什么,或者为什么相同的脚本在手动调用但不是以编程方式调用时可以工作?

我要强调的是,从计划任务中调用脚本的方式是没有问题的!脚本触发是因为相应的日志文件已填充。

非常感谢您对此的任何见解或帮助!

标签: scheduled-taskspowershell-4.0

解决方案


因为我发现了问题,所以快速更新。事实证明,它与 powershell 脚本或计划任务本身无关......

在运行脚本的机器上,有一个映射为z:\驱动器的网络共享。我用它来保存日志。现在显然映射/挂载的处理方式不同,具体取决于脚本是交互调用还是编程调用,因为在后一种情况下,网络路径的解析\\network\share\folder1似乎没有成功,但是没有任何抱怨,这个过程只是默默地不启动。但是,如果我将日志指向物理本地路径或明确的完整网络路径本身,则运行脚本没有问题。

吸取的教训,永远不要相信操作系统的网络路径驱动器映射:D

干杯


推荐阅读