创建一个每周运行 6 天的计划任务
Creating a scheduled task that runs on 6 days a week
我正在尝试在 TaskScheduler
模块之前使用 PowerShell 创建一些计划任务,这不是一个选项,因为这将用于 运行 外部客户端计算机上的进程。因此我不能使用 cmd,因为我每次都需要指定凭据。
我已经深入研究了 comobject,但我不太明白这一点。
如果我能弄清楚触发器,我会非常乐意使用它,基本上我需要它 运行 每周 6 天(不包括星期日)每天一次的特定时间。
我想我已经记下了行动和论据,但这是我努力理解的导火索。
这是我正在处理的块,它是从 here 中解放出来的,所以所有的功劳都在那里!
try {
[Object] $objScheduledTask = New-Object -ComObject("Schedule.Service")
if (!($objScheduledTask.Connected)) {
try {
$objScheduledTask.Connect($env:COMPUTERNAME)
$objScheduledTask_Folder = $objScheduledTask.GetFolder('\')
$objScheduledTask_TaskDefinition = $objScheduledTask.NewTask(0)
#Registration / Definitions
$objScheduledTask_RegistrationInfo = $objScheduledTask_TaskDefinition.RegistrationInfo
$objScheduledTask_RegistrationInfo.Description = 'My task name'
#Define Settings
$objScheduledTask_Settings = $objScheduledTask_TaskDefinition.Settings
$objScheduledTask_Settings.Enabled = $True
$objScheduledTask_Settings.StartWhenAvailable = $True
$objScheduledTask_Settings.Hidden = $False
#Triggers
$objScheduledTask_Triggers = $objScheduledTask_TaskDefinition.Triggers
$objScheduledTask_Trigger = $objScheduledTask_Triggers.Create(2)
$objScheduledTask_Trigger.StartBoundary = "2011-10-01T04:00:00"
$objScheduledTask_Trigger.DaysInterval = 1
$objScheduledTask_Trigger.Id = "DailyTriggerId"
$objScheduledTask_Trigger.Enabled = $True
#Action
$objScheduledTask_Action = $objScheduledTask_TaskDefinition.Actions.Create(0)
$objScheduledTask_Action.Path = 'task\to\execute.exe'
$objScheduledTask_Action.Arguments = ''
$objScheduledTask_Action.WorkingDirectory = 'C:\'
#Create Task
$objScheduledTask_Folder.RegisterTaskDefinition('Sample Scheduled Task Description', $objScheduledTask_TaskDefinition, 6, "System", $null , 5) | out-null
Write-Host "Scheduled Task Created Successfully" -ForegroundColor Green
} catch [System.Exception] {
Write-Host "Scheduled Task Creation Failed" -ForegroundColor Red
}
}
} catch [System.Exception]{
Write-Host "Scheduled Task Creation Failed" -ForegroundColor Red
Write-Host " EXCEPTION:" $_ -ForegroundColor Red
}
您需要 weekly trigger instead of a daily trigger if you want to run a task on selected days per week. The DaysOfWeek
property 将天指定为整数值中的位掩码。
$objScheduledTask_Triggers = $objScheduledTask_TaskDefinition.Triggers
$objScheduledTask_Trigger = $objScheduledTask_Triggers.Create(3)
$objScheduledTask_Trigger.StartBoundary = '2011-10-01T04:00:00'
$objScheduledTask_Trigger.WeeksInterval = 1 # run every week
$objScheduledTask_Trigger.DaysOfWeek = 126 # Mo-Sa
$objScheduledTask_Trigger.Id = 'DailyTriggerId'
$objScheduledTask_Trigger.Enabled = $true
我正在尝试在 TaskScheduler
模块之前使用 PowerShell 创建一些计划任务,这不是一个选项,因为这将用于 运行 外部客户端计算机上的进程。因此我不能使用 cmd,因为我每次都需要指定凭据。
我已经深入研究了 comobject,但我不太明白这一点。 如果我能弄清楚触发器,我会非常乐意使用它,基本上我需要它 运行 每周 6 天(不包括星期日)每天一次的特定时间。
我想我已经记下了行动和论据,但这是我努力理解的导火索。
这是我正在处理的块,它是从 here 中解放出来的,所以所有的功劳都在那里!
try {
[Object] $objScheduledTask = New-Object -ComObject("Schedule.Service")
if (!($objScheduledTask.Connected)) {
try {
$objScheduledTask.Connect($env:COMPUTERNAME)
$objScheduledTask_Folder = $objScheduledTask.GetFolder('\')
$objScheduledTask_TaskDefinition = $objScheduledTask.NewTask(0)
#Registration / Definitions
$objScheduledTask_RegistrationInfo = $objScheduledTask_TaskDefinition.RegistrationInfo
$objScheduledTask_RegistrationInfo.Description = 'My task name'
#Define Settings
$objScheduledTask_Settings = $objScheduledTask_TaskDefinition.Settings
$objScheduledTask_Settings.Enabled = $True
$objScheduledTask_Settings.StartWhenAvailable = $True
$objScheduledTask_Settings.Hidden = $False
#Triggers
$objScheduledTask_Triggers = $objScheduledTask_TaskDefinition.Triggers
$objScheduledTask_Trigger = $objScheduledTask_Triggers.Create(2)
$objScheduledTask_Trigger.StartBoundary = "2011-10-01T04:00:00"
$objScheduledTask_Trigger.DaysInterval = 1
$objScheduledTask_Trigger.Id = "DailyTriggerId"
$objScheduledTask_Trigger.Enabled = $True
#Action
$objScheduledTask_Action = $objScheduledTask_TaskDefinition.Actions.Create(0)
$objScheduledTask_Action.Path = 'task\to\execute.exe'
$objScheduledTask_Action.Arguments = ''
$objScheduledTask_Action.WorkingDirectory = 'C:\'
#Create Task
$objScheduledTask_Folder.RegisterTaskDefinition('Sample Scheduled Task Description', $objScheduledTask_TaskDefinition, 6, "System", $null , 5) | out-null
Write-Host "Scheduled Task Created Successfully" -ForegroundColor Green
} catch [System.Exception] {
Write-Host "Scheduled Task Creation Failed" -ForegroundColor Red
}
}
} catch [System.Exception]{
Write-Host "Scheduled Task Creation Failed" -ForegroundColor Red
Write-Host " EXCEPTION:" $_ -ForegroundColor Red
}
您需要 weekly trigger instead of a daily trigger if you want to run a task on selected days per week. The DaysOfWeek
property 将天指定为整数值中的位掩码。
$objScheduledTask_Triggers = $objScheduledTask_TaskDefinition.Triggers
$objScheduledTask_Trigger = $objScheduledTask_Triggers.Create(3)
$objScheduledTask_Trigger.StartBoundary = '2011-10-01T04:00:00'
$objScheduledTask_Trigger.WeeksInterval = 1 # run every week
$objScheduledTask_Trigger.DaysOfWeek = 126 # Mo-Sa
$objScheduledTask_Trigger.Id = 'DailyTriggerId'
$objScheduledTask_Trigger.Enabled = $true