在Powershell中,我使用Register-ScheduledJob -ScriptBlock {...}命令创建了一个ScheduledJob。此ScheduledJob执行ScriptBlock。如何从ScriptBlock中检索当前正在运行的ScheduledJob的名称?
E.g。
Register-ScheduledJob -ScriptBlock { $CurrentScheduledJob | Out-File -FilePath ScheduledJob.txt}
Windows任务计划程序中的任务正在运行命令:
powershell.exe -NoLogo -NonInteractive -WindowStyle Hidden -Command “Import-Module PSScheduledJob; $ jobDef = [Microsoft.PowerShell.ScheduledJob.ScheduledJobDefinition] :: LoadFromStore( 'asdfdsafsdf', 'C:\ WINDOWS \ system32 \设置\ systemprofile \应用程序数据\本地\微软\的Windows \ PowerShell的\ ScheduledJobs'); $ jobDef.Run()“
我试图保存变量$ jobDef,但它是空的。
谢谢
答案 0 :(得分:1)
我运行了ScheduledJob并导出了所有变量和环境变量,但未找到作业的名称或ID。
我找到了一个解决方法:
$jobName = 'testName'
Register-ScheduledJob -ScriptBlock { param($name)
$name | out-file C:\name.txt
} -name $jobName -ArgumentList @($jobName)
如果使用参数不是您的解决方案,并且您绝对必须在运行时检索它,那么这是一个功能请求。您可以在PowerShell user voice
上提出要求