gpt4 book ai didi

windows - 如何找到正在运行的计划任务的进程ID?

转载 作者:可可西里 更新时间:2023-11-01 10:02:47 25 4
gpt4 key购买 nike

我可以通过以下方式确定正在运行的任务:

$TaskService    = new-object -ComObject('Schedule.Service')
$TaskService.connect()
$TaskFolder = $TaskService.GetFolder('\')
$TaskFolder.gettasks(1) | ? {$_.state -eq 4}

如果这些任务启动与其他现有进程相同的程序(即进程名称),是否有任何方法可以识别这些任务的进程 ID?

我的目标是一个从计划任务启动的 PowerShell 脚本,该脚本可以识别它在哪个计划任务下运行。我可以使用 $PID 轻松确定 PoSh processID,但我不知道如何将其链接到特定的计划任务。

谢谢。

最佳答案

如果您在作为 Action 触发的脚本中运行它,这应该可以工作。假设可以通过 RunningTasks COM 对象方法找到任务路径,它将获取任务路径

# Initiate a COM object and connect
$TaskService = New-Object -ComObject('Schedule.Service')
$TaskService.Connect()

# Query for currently running tasks
# 0 - the user is permitted to see.
# 1 - 0 + Hidden
$runningTasks = $TaskService.GetRunningTasks(0)

# Get the task associated to a certain PID
$runningTasks | Where-Object{$_.EnginePID -eq $PID} | Select-Object -ExpandProperty Path

归功于 eryksun用于指出方法并链接到 ITaskService interface on MSDN


关于仅通过额外参数告诉您的脚本正在运行什么的其他建议,还有一些话要说。这样您就不必担心 COM 依赖性。

param(
[string]$SuperImportantString,
[int]$NumberofBagels,
[string]$TaskInitiated
)

Set-Content -Path $file -Value "I'm running from $TaskInitiated"

是的,这确实使它更加手动,但您可以最终控制文本和所使用的内容,而不必担心从同一个 PID 运行多个任务。

关于windows - 如何找到正在运行的计划任务的进程ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49260650/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com