scheduled-tasks - 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
正在做什么,或者为什么相同的脚本在手动调用但不是以编程方式调用时可以工作?
我要强调的是,从计划任务中调用脚本的方式是没有问题的!脚本触发是因为相应的日志文件已填充。
非常感谢您对此的任何见解或帮助!
解决方案
因为我发现了问题,所以快速更新。事实证明,它与 powershell 脚本或计划任务本身无关......
在运行脚本的机器上,有一个映射为z:\
驱动器的网络共享。我用它来保存日志。现在显然映射/挂载的处理方式不同,具体取决于脚本是交互调用还是编程调用,因为在后一种情况下,网络路径的解析\\network\share\folder1
似乎没有成功,但是没有任何抱怨,这个过程只是默默地不启动。但是,如果我将日志指向物理本地路径或明确的完整网络路径本身,则运行脚本没有问题。
吸取的教训,永远不要相信操作系统的网络路径驱动器映射:D
干杯
推荐阅读
- azure - 如何通过 VSTS (Azure DevOps) 构建管道获取要发布到 Azure 的图像
- android - Android:保存/打开从相机意图拍摄的照片
- c - 格式参数过多 - C
- php - WordPress 更改搜索结果
- julia - 在 Julia 中检索 HDF5 文件中的集合
- python - python facetgrid with sns.barplot and map; target no overlapping group bars
- mysql - 如何强制 mysql 客户端中的一个很长的脚本在出错时快速退出而不挂起几个小时
- javascript - Google 跟踪代码管理器中的 JavaScript,“=”输出为“\x3d”,如何修复?
- c++ - 为什么同一个变量的内存地址不一样?
- rest - HTTP 状态 405 – 方法不允许 | 泽西 | REST WS 调用 | 放置和删除