X30*_*61X 3 powershell powershell-4.0
目前,我正在通过PowerShell的自动化计划任务的创造,我使用的New-ScheduledTaskAction,New-ScheduledTaskTrigger和Register-ScheduledTask命令。现在,我有一些作业需要在以下条件下运行:
虽然TechNet文档的New-ScheduledTaskTrigger命令指定Daily和Weekly时间跨度参数,我没有看到一个Monthly,这是定义上述的运行时间是至关重要的。
在我使用 Powershell 的几年中,我想不出一个实例可以通过标准 UI 界面执行某些操作,而使用可用命令之一无法完成这些操作。
这只是在这里不可用,还是我错过了什么?
更新 #1
我只是偶然发现了这个SuperUser question,它看起来很有希望,但引用了 PSV3 而不是 PSV4 - 打算试一试并报告。
正如我在原帖中所说,上面的超级用户问题看起来很有希望,但最终不适用于 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
}
Run Code Online (Sandbox Code Playgroud)
我正在使用脚本内类来跟踪所有任务属性($task.TimeToRun、$task.DayToRun等),迭代这些属性的列表,将 Powershell 实现应用于每日和每周任务,然后切换到每月的 SchTasks.exe跨度。
我要注意的一件事是,乍一看,我认为可以使用和参数来设置运行任务的用户上下文,但事实并非如此。这指定了Schtasks.exe 在其下运行的凭据- 为了设置任务的用户上下文,您必须使用和。UPRURP
除了上面的链接,这两个也很有帮助:
https://msdn.microsoft.com/en-us/library/windows/desktop/bb736357(v=vs.85).aspx
| 归档时间: |
|
| 查看次数: |
8260 次 |
| 最近记录: |