【问题标题】:Get the current ScheduledJob name获取当前 ScheduledJob 名称
【发布时间】:2017-06-02 01:30:58
【问题描述】:

在 Powershell 中,我使用命令 Register-ScheduledJob -ScriptBlock {...} 创建了一个 ScheduledJob。这个 ScheduledJob 执行一个 ScriptBlock。如何从 ScriptBlock 中检索当前运行的 ScheduledJob 的名称?

例如

Register-ScheduledJob -ScriptBlock { $CurrentScheduledJob | Out-File -FilePath ScheduledJob.txt}

Windows 任务计划程序中的任务正在运行命令:

powershell.exe -NoLogo -NonInteractive -WindowStyle Hidden -Command "导入模块 PSScheduledJob; $jobDef = [Microsoft.PowerShell.ScheduledJob.ScheduledJobDefinition]::LoadFromStore('asdfdsafsdf', 'C:\Windows\system32\config\systemprofile\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs'); $jobDef.Run()"

我试图保存变量 $jobDef 但它是空的。

谢谢

【问题讨论】:

  • 也许 $CurrentScheduledJob.Name 会起作用。您应该提供更多代码来指示 $CurrentScheduledJob 的来源。
  • $CurrentScheduledJob 实际上并不存在。抱歉,如果不清楚。

标签: powershell


【解决方案1】:

我运行了一个 ScheduledJob 并导出了所有变量和环境变量,但没有找到作业的名称或 ID。

我找到了解决方法:

$jobName = 'testName'
Register-ScheduledJob -ScriptBlock { param($name)
         $name | out-file C:\name.txt
    } -name $jobName -ArgumentList @($jobName)

如果使用参数不是您的解决方案,并且您绝对必须在运行时检索它,那么这是一个功能请求。你可以在PowerShell user voice询问这个

【讨论】:

  • 它对我不起作用,因为我需要在执行时找出作业的名称。此处将在“作业注册”处检索。
  • 在作业注册时未检索到。它是在工作注册时设置的。如答案中所述,如果您不将其作为参数传递,则没有实用的方法可以在运行时检索它。请使用有关此解决方案如何失败的其他详细信息更新您的问题。
猜你喜欢
  • 2014-01-15
  • 2015-09-14
  • 2016-03-13
  • 2016-05-02
  • 1970-01-01
  • 2012-03-05
  • 2011-10-20
  • 2011-01-04
  • 2015-05-21
相关资源
最近更新 更多