mirror of
https://github.com/gnh1201/welsonjs.git
synced 2025-05-07 12:16:04 +00:00
Create task-scheduler.js
This commit is contained in:
parent
8a185cb048
commit
bf6fa1c044
96
lib/task-scheduler.js
Normal file
96
lib/task-scheduler.js
Normal file
|
@ -0,0 +1,96 @@
|
|||
// task-scheduler.js
|
||||
// https://github.com/gnh1201/welsonjs
|
||||
|
||||
// Connect to Task Scheduler service
|
||||
function connect() {
|
||||
var service = CreateObject("Schedule.Service");
|
||||
service.Connect();
|
||||
return service;
|
||||
}
|
||||
|
||||
// Get the root folder of Task Scheduler
|
||||
function getRootFolder(service) {
|
||||
return service.GetFolder("\\");
|
||||
}
|
||||
|
||||
// Create a new task definition
|
||||
function createTaskDefinition(service) {
|
||||
return service.NewTask(0); // Flags = 0
|
||||
}
|
||||
|
||||
// Set registration info for the task
|
||||
function setRegistrationInfo(taskDefinition, description, author) {
|
||||
var regInfo = taskDefinition.RegistrationInfo;
|
||||
regInfo.Description = description;
|
||||
regInfo.Author = author;
|
||||
}
|
||||
|
||||
// Configure task settings
|
||||
function configureTaskSettings(taskDefinition) {
|
||||
var settings = taskDefinition.Settings;
|
||||
settings.StartWhenAvailable = true;
|
||||
}
|
||||
|
||||
// Create a registration trigger
|
||||
function createRegistrationTrigger(taskDefinition) {
|
||||
var triggers = taskDefinition.Triggers;
|
||||
var trigger = triggers.Create(7); // 7 = Registration Trigger
|
||||
trigger.ExecutionTimeLimit = "PT5M"; // Five minutes
|
||||
trigger.Id = "RegistrationTriggerId";
|
||||
}
|
||||
|
||||
// Add an action to execute a program
|
||||
function addExecutableAction(taskDefinition, executablePath) {
|
||||
var actions = taskDefinition.Actions;
|
||||
var action = actions.Create(0); // 0 = Executable Action
|
||||
action.Path = executablePath;
|
||||
}
|
||||
|
||||
// Register the task in Task Scheduler
|
||||
function registerTask(rootFolder, taskDefinition, taskName) {
|
||||
rootFolder.RegisterTaskDefinition(
|
||||
taskName,
|
||||
taskDefinition,
|
||||
6, // Task creation flags
|
||||
null, // UserId
|
||||
null, // Password
|
||||
3 // LogonType
|
||||
);
|
||||
}
|
||||
|
||||
// Create and register the task
|
||||
function createAndRegisterTask(service, rootFolder, taskName, executablePath, description, author) {
|
||||
var taskDefinition = createTaskDefinition(service);
|
||||
|
||||
setRegistrationInfo(taskDefinition, description, author);
|
||||
configureTaskSettings(taskDefinition);
|
||||
createRegistrationTrigger(taskDefinition);
|
||||
addExecutableAction(taskDefinition, executablePath);
|
||||
|
||||
console.log("Task definition created. About to submit the task...");
|
||||
registerTask(rootFolder, taskDefinition, taskName);
|
||||
console.log("Task submitted.");
|
||||
}
|
||||
|
||||
function test() {
|
||||
var service = connectToService();
|
||||
var rootFolder = getRootFolder(service);
|
||||
|
||||
createAndRegisterTask(
|
||||
service,
|
||||
rootFolder,
|
||||
"Test Registration Trigger",
|
||||
"C:\\Windows\\System32\\notepad.exe",
|
||||
"Start Notepad when the task is registered.",
|
||||
"Author Name"
|
||||
);
|
||||
}
|
||||
|
||||
exports.connect = connect;
|
||||
exports.getRootFolder = getRootFolder;
|
||||
exports.createAndRegisterTask = createAndRegisterTask;
|
||||
|
||||
exports.VERSIONINFO = "Windows Task Scheduler Scripting Interface (task-scheduler.js) version 0.1";
|
||||
exports.AUTHOR = "abuse@catswords.net";
|
||||
exports.global = global;
|
||||
exports.require = require;
|
Loading…
Reference in New Issue
Block a user