[英]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.