powershell - 如何在 Go 中查询 Windows 计划任务信息?
问题描述
计划任务具有启动触发器。此任务运行一个 PowerShell 脚本,该脚本立即运行 Go 程序的可执行文件。
Go 程序需要知道它是否正在运行,因为在启动时触发了计划任务,以便它可以采取一些行动doThingAfterBootTrigger()
。如果计划任务是由于其他原因(不是因为启动触发器)而触发的,则doThingAfterBootTrigger()
不应发生。
除了启动 Go 程序之外,PowerShell 脚本应该什么都不做。判断是否doThingAfterBootTrigger()
发生的逻辑需要在 Go 程序中。
如果 Go 程序需要来自 PowerShell 脚本的信息来确定这是否是“启动后触发”情况,那么 PowerShell 脚本可以将该数据传递给 Go 程序。例如,如果 Go 的os.Getppid()
函数不存在,那么 Go 程序可以接受 PID 作为参数,PowerShell 脚本将其 PID 作为参数传递给 Go 程序。
潜在的解决方案:
- Go 程序依赖于 PowerShell,执行 PowerShell 的
Get-ScheduledTaskInfo
命令。 - 使用 Cgo,使用
mstask.h
C++ 标头。
这应该完全在本机代码中完成,因此解决方案 1 不是首选。我缺少一个简单的解决方案吗?
解决方案
推荐阅读
- python - 如何从 (1000, 1) 创建 (1000, 500) 数组并通过 n 值索引?
- java - HttpURLConnection 在 getResponseCode 处抛出 NullPointerException
- laravel - Laravel 嵌套急切加载和选择
- python - 在 Python 中获取 eBay restful 的最终用户令牌
- regex - Angular5:Validator.pattern 不适用于输入
- python - 快速访问 DataFrame 中的行子集
- c++ - 一组类型的显式实例化
- haskell - 具有类型构造函数的类型类定义的 Haskell 实例
- c++ - 虚拟表和对象切片
- javascript - 隐藏空的 html 表格行