[英]Powershell - Monthly Scheduled Task Trigger
我目前正在通过Powershell自动执行计划任务的创建,并且正在使用New-ScheduledTaskAction
, New-ScheduledTaskTrigger
和Register-ScheduledTask
命令。 现在,我有一些工作需要在以下条件下运行:
尽管New-ScheduledTaskTrigger
命令的technet文档指定了Daily
和Weekly
时间跨度参数,但我看不到Monthly
一个,这对于定义上述运行时间至关重要。
在使用Powershell的几年中,我无法想到可以通过标准UI界面执行某些操作的实例,而我无法使用其中一个可用命令来完成该任务。
这只是在这里不可用,还是我缺少了什么?
更新#1
我只是偶然发现了这个SuperUser问题 ,看起来确实很有前途,但是引用了PSV3而不是PSV4-会给它一个机会并进行报告。
正如我在原始帖子中所说,上面的SuperUser问题看起来很有希望,但最终不适用于PSV4,并且帖子中给出的示例基本上是几乎没有上下文的复制/粘贴作业。
我意识到我可以利用Powershell脚本中的Schtasks.exe来处理每月的汇总,并且设置起来相当容易,尽管有些乏味:
# set the trigger depending on time, span, and day
$runSpan = $task.SpanToRun;
if ($runSpan.Equals("Daily"))
{
$trigger = New-ScheduledTaskTrigger -Daily -At $task.TimeToRun
Register-ScheduledTask -Action $action -Trigger $trigger -TaskName $task.TaskName -User $Username -Password $Password -Description $task.Description
}
if ($runSpan.Equals("Weekly"))
{
$trigger = New-ScheduledTaskTrigger -Weekly -At $task.TimeToRun -DaysOfWeek $task.DayToRun
Register-ScheduledTask -Action $action -Trigger $trigger -TaskName $task.TaskName -User $Username -Password $Password -Description $task.Description
}
# script out SchTasks magic to create the monthly tasks
if ($runSpan.Equals("Monthly"))
{
$taskParams = @("/Create",
"/TN", $task.TaskName,
"/SC", "monthly",
"/D", $task.DayToRun,
"/ST", $task.TimeToRun,
"/TR", $filePath,
"/F", #force
"/RU", $Username,
"/RP", $Password);
# supply the command arguments and execute
#schtasks.exe $taskParams
schtasks.exe @taskParams
}
我正在使用一个脚本内类来跟踪所有任务属性( $task.TimeToRun
, $task.DayToRun
等),遍历所有任务的属性,将Powershell实现应用于每日和每周任务,然后切换到SchTasks.exe获取每月跨度。
我要注意的一件事是,乍一看,我认为可以使用U
和P
参数来设置运行任务的用户上下文,但事实并非如此。 这指定了Schtasks.exe运行的凭据-为了设置任务的用户上下文,必须使用RU
和RP
。
除了上面的链接,这两个也非常有帮助:
https://msdn.microsoft.com/zh-CN/library/windows/desktop/bb736357(v=vs.85).aspx
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.