JobExecuter documentation
Autor: Bodoconsult EDV-Dienstleistungen GmbH Robert Leisner
JobExecuter technical documentation
Date created: 19.01.2021
Table of content
Security related issues with JobExecuter
JobExecuter: create your own password to secure jobs
Overview over the available logging facilities in JobExecuter
Configuration of JobExecuter for sending SMTP mails
What is JSON and how to edit JSON files for JobExecuter jobs
Command line parameters for JobExecuter
SqlBackupLogSingleDatabaseJobTask
SqlBackupSingleDatabaseJobTask
SqlComplianceAllDatabasesJobTask
SqlComplianceSingleDatabaseJobTask
Registered and unregistered trademarks
About JobExecuter
JobExecuter is a software by Bodoconsult EDV-Dienstleistungen GmbH.
Bodoconsult EDV-Dienstleistungen GmbH
Ostring 45a
85591 Vaterstetten
http://www.bodoconsult.de
info@bodoconsult.de
What is JobExecuter
JobExecuter fulfills helpful tasks especially for small Windows based IT enviroments but it is not limited on them. In such small environments often important features like database backup or file backup are missed and have to be implemented with some effort.
JobExecuter is a software to run different types of administrative jobs like database backup, file copying, running apps and others. It is used used in conjunction with Windows Task Scheduler (WTS). The WTS provides the job scheduling infrastructure. JobExecuter provides the functionality of the jobs in an supervised environment.
JobExecuter supports self-documentation: each job can be documented automatically and all such job documentations can be added to a complete documentation of all JobExecuter based jobs running on diverse server systems.
A JobExecuter job consists of one or more JobTasks. A job and its JobTasks is defined in a UTF8 encoded JSON file. The JSON file must be encrypted to a CJSON file before running the job. To run a job call JobExecuter.exe with the CJSON file with the job definition as parameter. The command line call for JobExecuter looks like:
JobExecuter.exe CJsonFileName
Or more general:
%PathToJobExcuterExe%\JobExecuter.exe %PathToJobJsonFile%\%JsonFileName%.cjson
Security related issues with JobExecuter
Some of the JobTasks provided by JobExecuter need credentials to be provided. In that case the passwords do not have to be provide as clear text but as encrpyted string.
JobExecuter provides the command line parameter /p to encrypt passwords. Please see below in the section on command line parameters for JobExecuter.
Run JobExecuter always under an account with minimal permission.
To encrypt your job file run the following command line:
%PathToJobExcuterExe%\JobExecuter.exe /c %PathToJobJsonFile%\%JsonFileName%.cjson
You have to provide a password that must be equal to the one stored (encrypted) in the JobExecuter.exe.config file. See below how to encrpyt a password for JobExecuter (command line argument /j).
The result of this command line will be a file %PathToJobJsonFile%\%JsonFileName%.cjson. Run the job with the encrypted password use:
%PathToJobExcuterExe%\JobExecuter.exe %PathToJobJsonFile%\%JsonFileName%.cjson
Setting up JobExecuter
JobExecuter installation
Create the folder structure for JobExcuter via Windows Explorer starting with the TargetFolder. The TargetFolder may be any local folder on the machine running the Windows Task Scheduler to use.
- TargetFolder
Target path for JobExecuter environment
- TargetFolder\JobExecuter
Application install path
- TargetFolder\Jobs
Folder with subfolders for each job
Then copy the Samples folder in the JobExecuter's installation path to the TargetFolder\Jobs folder and renamed it to Test.
The Test folder will contain a test job not running from Windows Taslk Scheduler for building and testing new JobTasks.
Use the Test folder as template for creating new jobs.
JobExecuter: create your own password to secure jobs
To secure JobExecuter jobs you have to create your own salt and then to encrypt your password.
Go to JobExecuter's installation path TargetFolder\JobExecuter.
Then run Salt.bat to create a new salt. It will be copied to clipboard.
Then go edit JobExecuter.config and replace the JobSalt setting value with the just created salt from clipboard. Save JobExecuter.config.
Then run Password.bat to encrypt your password. It will be copied to clipboard.
Then go edit JobExecuter.config again and replace the JobPassword setting value with the just created password from clipboard. Save JobExecuter.config.
Overview over the available logging facilities in JobExecuter
JobExcuter provides the following logging facilities:
- Log file
By default JobExecuter creates always a log file in the job JSON file's directory with the the file name but the file extension .log.
- SMTP summary
JobExecuter can send a summary of the job's runtime results via SMTP to a job's SummaryMailReceiver. SMTP must be configured for JobExecuter. See section below.
- SMTP errors
JobExecuter can send error messages resulting from the job's runtime via SMTP to a job's ErrorMailReceiver or to a separate JobTask's ErrorMailReceiver. SMTP must be configured for JobExecuter. See section below.
- Windows Event log
If needed you can enable JobExecuter to log errors to the Windows Event log. You have to set the Jobs' property WriteToEventLog to true. You can find the log entries under the application log there.
Configuration of JobExecuter for sending SMTP mails
To enable JobExecuter to send SMTP mails you need the SMTP address to use, the username and password to login to the SMTP server and a email address you want to send on behalf of.
!!!! JobExecuter uses only secure SMTP servers !!!!
To configure JobExecuter you must edit the JobExecuter.config located in the install directory of JobExecuter. Here the settings to edit:
- SmtpServer:
SMTP server address like smtp.1und1.de
- SmtpAccount:
account name to login on the SMTP server
- SmtpPassword:
Encrypted password to login on the SMTP server (use command line parameter /p to encrypt a password. See section above!)
- SmtpSendAs:
email address you send on behalf on, i.e. noreply@test.de
Setting up a JobExecuter job
What is JSON and how to edit JSON files for JobExecuter jobs
JSON is common plain text data format to transfer or store data. It is lightweight and relatively easy understandable compared to the alternative XML. JSON makes it easily possible to store object data outside a software and load it from a file in a software. Here a sample of a JobExecuter's Job object stored a JSON:
{
"$type": "JobExecuter.Dal.Model.Job, JobExecuter.Dal",
"Name": "Sample job for SqlBackupSingleDatabaseJobTask",
"Description": "This job contains one or more sample JobTasks for class JobExecuter.Dal.Model.SqlBackupSingleDatabaseJobTask",
"ErrorMailReceiver": "errorreceiver1@test.xxx;errorreceiver2@test.xxx",
"SummaryMailReceiver": "summaryreceiver1@test.xxx;summaryreceiver2@test.xxx",
"JobTasks": [
{
"$type": "JobExecuter.Dal.Model.SqlBackupSingleDatabaseJobTask, JobExecuter.Dal",
"DatabaseName": "MediaDb",
"LocalTarget": "d:\\tmp",
"NetworkTarget": null,
"FileName": "testbackup.bak",
"RemoveLocalBackup": false,
"Server": ".\\sqlexpress",
"Name": "Backup database to local file only",
"Description": null,
"ErrorMailReceiver": null,
"Timeout": 60
},
{
"$type": "JobExecuter.Dal.Model.SqlBackupSingleDatabaseJobTask, JobExecuter.Dal",
"DatabaseName": "MediaDb",
"LocalTarget": "d:\\tmp",
"NetworkTarget": "d:\\tmp\\network",
"FileName": "testbackup.bak",
"RemoveLocalBackup": true,
"Server": ".\\sqlexpress",
"Name": "Backup database to a network path",
"Description": null,
"ErrorMailReceiver": null,
"Timeout": 60
}
],
"Timeout": 500,
"WriteToEventLog": true
}
To edit JSON files you generally need only a good text editor. We recommend Notepad++. Copy and paste is a favourable way for creating new job files for JobExecuter.
JSON itself is formatted plain text with UTF8 encoding in case of JobExecuter. If you edit JSON files you will have to escape certain characters in the text. Please see the list of critical chararcters to escape in JSON:
- \b
Backspace (ascii code 08)
- \f
Form feed (ascii code 0C)
- \n
New line
- \r
Carriage return
- \t
Tab
- \"
Double quote
- \\
Backslash character
Example: Especially if you edit directory or file paths you have to escape the backslash. Instead of the directory path
C:\Test\Jobs\backup\
you have to write
C:\\Test\\Jobs\\backup\\
in the JSON file.
Setting up a test job
In the JobExecuter's installation path there is a folder Samples with an subfolder SampleJobFolder. This folder contains a sample job with all necessary steps to work with JobExecuter.
You can use this sample folder to create new jobs by copying the folder to a target folder for jobs and adjust the content of the JSON and BAT to your conrete situation.
Folder content
- job.json:
Job definition file
- job.cjson:
Encrypted job definition file
- prepare.bat:
Encrypt JSON job file to CJSON
- test.bat:
Start job for testing purposes
- start.bat:
Start job from Windows task scheduler
Command line parameters for JobExecuter
CJsonFileName
%PathToJobExcuterExe%\JobExecuter.exe %PathToJobJsonFile%\%JsonFileName%.cjson
Runs a job defined in the CJSON file %PathToJobJsonFile%\%JsonFileName%.cjson
JSON files to execute with JobExecuter should be UTF8 encoded and must be encrypted via command line parameter /c to a CJSON file. We recommend using Notepad++ as editor for JSON files. Encrypted JSON files must have the extension .cjson.
Each job should have an own folder.
If there is a readme.txt in the same folder as the JSON job file, the JobDocuJobTask documenting the job will add the content of readme.txt to the job documentation.
/p (Encrypt password)
%PathToJobExcuterExe%\JobExecuter.exe /p
If you run JobExecuter with this parameter you will be ask to insert a clear text password. This password will be encrypted by JobExecuter and copied to the clipboard. From there you can paste it to a JSON job definition file where a password is required in encrypted form.
/c (Encrypt job file)
%PathToJobExcuterExe%\JobExecuter.exe /c %PathToJobJsonFile%\%JsonFileName%.json
Encrypt a job's JSON file to a CJSON file. Password required for that transaction! See below.
/s (create salt for encrypting passwords use for encrypting files)
%PathToJobExcuterExe%\JobExecuter.exe /j
If you run JobExecuter with this parameter you will be ask to insert a clear text password. This password will be encrypted by JobExecuter and copied to the clipboard. From there you can paste it to jobexecuter.exe.config setting "JobPassword" where a password is required in encrypted form.
The you must edit the JobExecuter.config located in the install directory of JobExecuter. Search the setting "JobSalt" and copy the clipboard in the value of this setting. Save and close the config-file.
/j (password for encrypting job files)
%PathToJobExcuterExe%\JobExecuter.exe /j
If you run JobExecuter with this parameter you will be ask to insert a clear text password. This password will be encrypted by JobExecuter and copied to the clipboard. From there you can paste it to jobexecuter.exe.config setting "JobPassword" where a password is required in encrypted form.
The you must edit the JobExecuter.config located in the install directory of JobExecuter. Search the setting "JobPassword" and copy the clipboard in the value of this setting. Save and close the config-file.
Overview JobTask classes
- ActiveDirectoryJobTask
Creates a report of the current Windows domain's Active Directory structure.
- CmdBatchJobTask
Task to run a cmd.exe batch from a file or a string.
- DhcpJobTask
Creates a report of the current Windows domain's DHCP infrastructure
- DiskSizeJobTask
Checks the disk size and places an error if free space is below a certain percentage or below a certain absolute value
- DnsJobTask
Creates a report for a Microsoft DNS server
- DocumentationJobTask
Creates a HTML documentation from diverse JSON files as input.
May be used i.e. for combining database compliance reports from different database servers to one compliance report HTML file.- FolderBackupJobTask
Backup of a folder based on robocopy.exe by Microsoft.
- FolderCleanJobTask
Task to clean a folder from old files
- FolderComplianceJobTask
Task to create a compliance report for a folder.
- JobDocuJobTask
Task to document the current JobExecuter job
- PingCheckJobTask
Check successful ping to certain network addresses
- PsBatchJobTask
Run a PowerShell script file
- RunAppJobTask
Run an app with or without parameters
- SqlBackupAllDatabasesJobTask
Task to take a full backup for all SQL databases (with exception of TempDb) on a Microsoft® SqlServer starting with version 2008.
- SqlBackupLogSingleDatabaseJobTask
Task to take a log file backup for a single SQL database on Microsoft® SqlServer starting with version 2008.
- SqlBackupSingleDatabaseJobTask
Task to take a full backup for a single SQL database on Microsoft® SqlServer starting with version 2008.
- SqlBatchJobTask
Task to run a SQL batch from a file or from a string against a Microsoft® SqlServer
- SqlComplianceAllDatabasesJobTask
Task to collect compliance relevante information for all SQL databases on a Microsoft® SqlServer
- SqlComplianceSingleDatabaseJobTask
Task to collect compliance relevante information for a single SQL database on a Microsoft® SqlServer
- SqlDocuAllDatabasesJobTask
Task to take a documentation for all SQL databases on a Microsoft® SqlServer with exception of databases Master, Msdb, Model and TempDb.
- SqlDocuSingleDatabaseJobTask
Task to take a documentation for a single SQL database on a Microsoft® SqlServer.
- SqlMaintenanceJobTask
Job to perfrom maintenance on a Microsoft® SqlServer instance
- TaskSchedulerDocuJobTask
Task to save TaskScheduler tasks as XML and document it
Documentation JobTask classes
ActiveDirectoryJobTask
Creates a report of the current Windows domain's Active Directory structure.
Work only for single domain networks. Domain forest are not supported. Delivers a report over the structure of the AD with Organizational Units (OU), users, groups and computers.
Properties
- Description
Description of the job used for documentation
- ErrorMailReceiver
Mail addresses separarted with semicolon to send an error mail to
- HtmlTargetFileName
Export documentation to HTML
- JsonTargetFileName
Export documentation as <see cref="!:StructuredText" /> object to JSON.
If empty, the file will be placed in app subfolder docu with the name "job_docu.json"- MailTo
Mail receiver(s) separated by semicolon. Intended to use for mail compliance report to compliance process owner
- Name
Name of the job
- PdfTargetFileName
Export documentation to Pdf
- Timeout
Timeout in seconds the job will be terminated after start
- Title
Title for documentation
{
"$type": "JobExecuter.Dal.Model.Job, JobExecuter.Dal",
"Name": "Sample job for ActiveDirectoryJobTask",
"Description": "This job contains one or more sample JobTasks for class JobExecuter.Dal.Model.ActiveDirectoryJobTask",
"ErrorMailReceiver": "errorreceiver1@test.xxx;errorreceiver2@test.xxx",
"SummaryMailReceiver": "summaryreceiver1@test.xxx;summaryreceiver2@test.xxx",
"JobTasks": [
{
"$type": "JobExecuter.Dal.Model.ActiveDirectoryJobTask, JobExecuter.Dal",
"Title": null,
"MailTo": null,
"HtmlTargetFileName": "D:\\tmp\\JobExecuter\\ActiveDirectory.htm",
"PdfTargetFileName": null,
"JsonTargetFileName": null,
"Name": "Report Active Directory",
"Description": "Report the current domain's Active Directory structure with organisation units (OU), users, groups and computers.",
"ErrorMailReceiver": null,
"Timeout": 30
}
],
"Timeout": 500,
"WriteToEventLog": true
}
CmdBatchJobTask
Task to run a cmd.exe batch from a file or a string.
Set either CmdBatchJobTask.Filename or CmdBatchJobTask.BatchFileContent. In doubt CmdBatchJobTask.BatchFileContent wins!
The advantage of running a batch in mode CmdBatchRunType.LineByLine that the batch runs line per line as separated processes.
The lines must be independent from each other.
Properties
- BatchFileContent
Batch commands as string (like in a .bat or .cmd file). Commands in the string run always in mode CmdBatchRunType.LineByLine. Set either CmdBatchJobTask.Filename or CmdBatchJobTask.BatchFileContent. In doubt CmdBatchJobTask.BatchFileContent wins!
- Description
Description of the job used for documentation
- ErrorMailReceiver
Mail addresses separarted with semicolon to send an error mail to
- Filename
Filename of .bat or .cmd file to run. Set either CmdBatchJobTask.Filename or CmdBatchJobTask.BatchFileContent. In doubt CmdBatchJobTask.BatchFileContent wins!
- Name
Name of the job
- RunType
Type of how to run a cmd batch file
- Timeout
Timeout in seconds the job will be terminated after start
{
"$type": "JobExecuter.Dal.Model.Job, JobExecuter.Dal",
"Name": "Sample job for CmdBatchJobTask",
"Description": "This job contains one or more sample JobTasks for class JobExecuter.Dal.Model.CmdBatchJobTask",
"ErrorMailReceiver": "errorreceiver1@test.xxx;errorreceiver2@test.xxx",
"SummaryMailReceiver": "summaryreceiver1@test.xxx;summaryreceiver2@test.xxx",
"JobTasks": [
{
"$type": "JobExecuter.Dal.Model.CmdBatchJobTask, JobExecuter.Dal",
"Filename": "testbackup.bak",
"RunType": "WholeFile",
"BatchFileContent": null,
"Name": "Run a batch (*.bat or *.cmd) with cmd.exe",
"Description": null,
"ErrorMailReceiver": null,
"Timeout": 110
},
{
"$type": "JobExecuter.Dal.Model.CmdBatchJobTask, JobExecuter.Dal",
"Filename": "testbackup.bak",
"RunType": "LineByLine",
"BatchFileContent": null,
"Name": "Run a batch (*.bat or *.cmd) with cmd.exe",
"Description": null,
"ErrorMailReceiver": null,
"Timeout": 110
},
{
"$type": "JobExecuter.Dal.Model.CmdBatchJobTask, JobExecuter.Dal",
"Filename": null,
"RunType": "LineByLine",
"BatchFileContent": "REm dfgsfd\r\ncopy d:\\tmp\\FolderBackup1\\*.* d:\\tmp\\FolderBackup2\\*.* /y\r\nREM fghdfg\r\ncopy d:\\tmp\\FolderBackup2\\*.* d:\\tmp\\FolderBackup1\\*.* /y\r\nREM fghfsd\r\n",
"Name": "Run a batch commands from a string",
"Description": null,
"ErrorMailReceiver": null,
"Timeout": 110
}
],
"Timeout": 500,
"WriteToEventLog": true
}
DhcpJobTask
Creates a report of the current Windows domain's DHCP infrastructure
User running that job needs to be member of security group DHCP Administrators on the DHCP server
Properties
- Description
Description of the job used for documentation
- ErrorMailReceiver
Mail addresses separarted with semicolon to send an error mail to
- HtmlTargetFileName
Export documentation to HTML
- JsonTargetFileName
Export documentation as <see cref="!:StructuredText" /> object to JSON.
If empty, the file will be placed in app subfolder docu with the name "job_docu.json"- MailTo
Mail receiver(s) separated by semicolon. Intended to use for mail compliance report to compliance process owner
- Name
Name of the job
- PdfTargetFileName
Export documentation to Pdf
- Timeout
Timeout in seconds the job will be terminated after start
- Title
Title for documentation
{
"$type": "JobExecuter.Dal.Model.Job, JobExecuter.Dal",
"Name": "Sample job for DhcpJobTask",
"Description": "This job contains one or more sample JobTasks for class JobExecuter.Dal.Model.DhcpJobTask",
"ErrorMailReceiver": "errorreceiver1@test.xxx;errorreceiver2@test.xxx",
"SummaryMailReceiver": "summaryreceiver1@test.xxx;summaryreceiver2@test.xxx",
"JobTasks": [
{
"$type": "JobExecuter.Dal.Model.DhcpJobTask, JobExecuter.Dal",
"Title": null,
"MailTo": null,
"HtmlTargetFileName": "D:\\tmp\\JobExecuter\\DHCP.htm",
"PdfTargetFileName": null,
"JsonTargetFileName": null,
"Name": "Report Dhcp infrastructure",
"Description": "Report the current domain's DHCP infrastructure",
"ErrorMailReceiver": null,
"Timeout": 30
}
],
"Timeout": 500,
"WriteToEventLog": true
}
DiskSizeJobTask
Checks the disk size and places an error if free space is below a certain percentage or below a certain absolute value
Properties
- Description
Description of the job used for documentation
- Drives
Drives to check for disk space
- ErrorMailReceiver
Mail addresses separarted with semicolon to send an error mail to
- Name
Name of the job
- Timeout
Timeout in seconds the job will be terminated after start
{
"$type": "JobExecuter.Dal.Model.Job, JobExecuter.Dal",
"Name": "Sample job for DiskSizeJobTask",
"Description": "This job contains one or more sample JobTasks for class JobExecuter.Dal.Model.DiskSizeJobTask",
"ErrorMailReceiver": "errorreceiver1@test.xxx;errorreceiver2@test.xxx",
"SummaryMailReceiver": "summaryreceiver1@test.xxx;summaryreceiver2@test.xxx",
"JobTasks": [
{
"$type": "JobExecuter.Dal.Model.DiskSizeJobTask, JobExecuter.Dal",
"Drives": [
{
"$type": "JobExecuter.Dal.Model.Drive, JobExecuter.Dal",
"Name": "C:",
"MinimumPercentageOfFreeSpace": 0.3,
"IpAddress": null
},
{
"$type": "JobExecuter.Dal.Model.Drive, JobExecuter.Dal",
"Name": "D:",
"MinimumPercentageOfFreeSpace": 0.4,
"IpAddress": null
},
{
"$type": "JobExecuter.Dal.Model.Drive, JobExecuter.Dal",
"Name": "\\\\bododata\\data$",
"MinimumPercentageOfFreeSpace": 0.7,
"IpAddress": null
},
{
"$type": "JobExecuter.Dal.Model.Drive, JobExecuter.Dal",
"Name": "C:",
"MinimumPercentageOfFreeSpace": 0.3,
"IpAddress": "192.168.12.219"
},
{
"$type": "JobExecuter.Dal.Model.Drive, JobExecuter.Dal",
"Name": "C:",
"MinimumPercentageOfFreeSpace": 0.3,
"IpAddress": "192.168.12.15"
}
],
"Name": "Sample for DiskSizeJobTask job task",
"Description": null,
"ErrorMailReceiver": null,
"Timeout": 30
}
],
"Timeout": 500,
"WriteToEventLog": true
}
DnsJobTask
Creates a report for a Microsoft DNS server
User running that job needs to be member of security group DNS administrators on the DNS server
Properties
- Description
Description of the job used for documentation
- ErrorMailReceiver
Mail addresses separarted with semicolon to send an error mail to
- HtmlTargetFileName
Export documentation to HTML
- JsonTargetFileName
Export documentation as <see cref="!:StructuredText" /> object to JSON.
If empty, the file will be placed in app subfolder docu with the name "job_docu.json"- MailTo
Mail receiver(s) separated by semicolon. Intended to use for mail compliance report to compliance process owner
- Name
Name of the job
- PdfTargetFileName
Export documentation to Pdf
- Server
FQDN of the DNS server
- Timeout
Timeout in seconds the job will be terminated after start
- Title
Title for documentation
{
"$type": "JobExecuter.Dal.Model.Job, JobExecuter.Dal",
"Name": "Sample job for DnsJobTask",
"Description": "This job contains one or more sample JobTasks for class JobExecuter.Dal.Model.DnsJobTask",
"ErrorMailReceiver": "errorreceiver1@test.xxx;errorreceiver2@test.xxx",
"SummaryMailReceiver": "summaryreceiver1@test.xxx;summaryreceiver2@test.xxx",
"JobTasks": [
{
"$type": "JobExecuter.Dal.Model.DnsJobTask, JobExecuter.Dal",
"Server": "BCGS02DC.BCG-AD.DE",
"Title": null,
"MailTo": null,
"HtmlTargetFileName": "D:\\tmp\\JobExecuter\\DNS.htm",
"PdfTargetFileName": null,
"JsonTargetFileName": null,
"Name": "Report a DNS server's structure",
"Description": "Report DNS server's structure",
"ErrorMailReceiver": null,
"Timeout": 30
}
],
"Timeout": 500,
"WriteToEventLog": true
}
DocumentationJobTask
Creates a HTML documentation from diverse JSON files as input.
May be used i.e. for combining database compliance reports from different database servers to one compliance report HTML file.
Properties
- AppendHelpFile
Append the JobExecuter help file to documentation
- Description
Description of the job used for documentation
- ErrorMailReceiver
Mail addresses separarted with semicolon to send an error mail to
- HtmlTargetFiles
Filenames for HTML documentation as result of the job
- JsonFiles
message to deliver for testing purposes
- Name
Name of the job
- Timeout
Timeout in seconds the job will be terminated after start
- Title
Title for documentation
{
"$type": "JobExecuter.Dal.Model.Job, JobExecuter.Dal",
"Name": "Sample job for DocumentationJobTask",
"Description": "This job contains one or more sample JobTasks for class JobExecuter.Dal.Model.DocumentationJobTask",
"ErrorMailReceiver": "errorreceiver1@test.xxx;errorreceiver2@test.xxx",
"SummaryMailReceiver": "summaryreceiver1@test.xxx;summaryreceiver2@test.xxx",
"JobTasks": [
{
"$type": "JobExecuter.Dal.Model.DocumentationJobTask, JobExecuter.Dal",
"JsonFiles": [
"d_:\\tmp\\test.jsonSample.json",
"d:\\tmp\\test.jsonSample.json"
],
"HtmlTargetFiles": [
"d:\\tmp\\FolderBackup2\\documentation.htm"
],
"Title": "Full documentation",
"AppendHelpFile": false,
"Name": "Full documentation",
"Description": null,
"ErrorMailReceiver": null,
"Timeout": 30
}
],
"Timeout": 500,
"WriteToEventLog": true
}
FolderBackupJobTask
Backup of a folder based on robocopy.exe by Microsoft.
Robocopy.exe is installed automatically starting with Windows 7 and Windows 2008 Server.
Properties
- BackupType
Defines how backup works. Default is FolderBackupType.PlainCopy.
- Description
Description of the job used for documentation
- ErrorMailReceiver
Mail addresses separarted with semicolon to send an error mail to
- ExcludeDirectories
Directories to exclude from backup
Syntax: C:\ToExclude1 "C:\To Exclude2" c:\ToExclude3- IncludeSubDirectories
Include subdirectories in the folder backup. Default: true
- Name
Name of the job
- ShowProgress
Show progress of backup. May reduce performance. Default: false
- SourcePath
Folder to backup
- TargetPath
Target folder for the backup
- Timeout
Timeout in seconds the job will be terminated after start
{
"$type": "JobExecuter.Dal.Model.Job, JobExecuter.Dal",
"Name": "Sample job for FolderBackupJobTask",
"Description": "This job contains one or more sample JobTasks for class JobExecuter.Dal.Model.FolderBackupJobTask",
"ErrorMailReceiver": "errorreceiver1@test.xxx;errorreceiver2@test.xxx",
"SummaryMailReceiver": "summaryreceiver1@test.xxx;summaryreceiver2@test.xxx",
"JobTasks": [
{
"$type": "JobExecuter.Dal.Model.FolderBackupJobTask, JobExecuter.Dal",
"SourcePath": "d:\\tmp\\FolderBackup1",
"TargetPath": "d:\\tmp\\FolderBackup2",
"ExcludeDirectories": null,
"BackupType": "CopyOnlyNewerFiles",
"ShowProgress": false,
"IncludeSubDirectories": true,
"Name": "Backup a folder to a local or network share target",
"Description": null,
"ErrorMailReceiver": null,
"Timeout": 60
}
],
"Timeout": 500,
"WriteToEventLog": true
}
FolderCleanJobTask
Task to clean a folder from old files
Properties
- Days
Clean folder from files older then X days
- Description
Description of the job used for documentation
- ErrorMailReceiver
Mail addresses separarted with semicolon to send an error mail to
- FolderPath
Path to clean
- Name
Name of the job
- Timeout
Timeout in seconds the job will be terminated after start
{
"$type": "JobExecuter.Dal.Model.Job, JobExecuter.Dal",
"Name": "Sample job for FolderCleanJobTask",
"Description": "This job contains one or more sample JobTasks for class JobExecuter.Dal.Model.FolderCleanJobTask",
"ErrorMailReceiver": "errorreceiver1@test.xxx;errorreceiver2@test.xxx",
"SummaryMailReceiver": "summaryreceiver1@test.xxx;summaryreceiver2@test.xxx",
"JobTasks": [
{
"$type": "JobExecuter.Dal.Model.FolderCleanJobTask, JobExecuter.Dal",
"FolderPath": "d:\\tmp",
"Days": 7,
"Name": "Clean a folder from files older than 7 days",
"Description": null,
"ErrorMailReceiver": null,
"Timeout": 60
}
],
"Timeout": 500,
"WriteToEventLog": true
}
FolderComplianceJobTask
Task to create a compliance report for a folder.
FolderComplianceJobTask requires running under administrative privileges due to accessing file system access control list.
Properties
- Description
Description of the job used for documentation
- ErrorMailReceiver
Mail addresses separarted with semicolon to send an error mail to
- FolderPaths
Path to create compiance reporting for
- HtmlTargetFileName
Export documentation to HTML
- JsonTargetFileName
Export documentation as <see cref="!:StructuredText" /> object to JSON.
If empty, the file will be placed in app subfolder docu with the name "job_docu.json"- MailTo
Mail receiver(s) separated by semicolon. Intended to use for mail compliance report to compliance process owner
- Name
Name of the job
- PdfTargetFileName
Export documentation to Pdf
- Timeout
Timeout in seconds the job will be terminated after start
- Title
Title for documentation
{
"$type": "JobExecuter.Dal.Model.Job, JobExecuter.Dal",
"Name": "Sample job for FolderComplianceJobTask",
"Description": "This job contains one or more sample JobTasks for class JobExecuter.Dal.Model.FolderComplianceJobTask",
"ErrorMailReceiver": "errorreceiver1@test.xxx;errorreceiver2@test.xxx",
"SummaryMailReceiver": "summaryreceiver1@test.xxx;summaryreceiver2@test.xxx",
"JobTasks": [
{
"$type": "JobExecuter.Dal.Model.FolderComplianceJobTask, JobExecuter.Dal",
"FolderPaths": [
{
"$type": "JobExecuter.Dal.Model.ComplianceFolder, JobExecuter.Dal",
"Path": "D:\\daten\\projekte",
"IncludeSubFolders": true,
"ShowPermissionsOfPredefinedAccounts": true
}
],
"Title": null,
"MailTo": "test@test123.de",
"HtmlTargetFileName": "d:\\tmp\\JobExecuter\\Compliance2.htm",
"PdfTargetFileName": null,
"JsonTargetFileName": null,
"Name": "Create a compliance report for file system folders",
"Description": null,
"ErrorMailReceiver": null,
"Timeout": 60
}
],
"Timeout": 500,
"WriteToEventLog": true
}
JobDocuJobTask
Task to document the current JobExecuter job
Properties
- CurrentJob
Current job (will be used if JobDocuJobTask.JobJsonFileName is empty.
- Description
Description of the job used for documentation
- ErrorMailReceiver
Mail addresses separarted with semicolon to send an error mail to
- HtmlTargetFileName
Export documentation to HTML
- JobJsonFileName
Full path of the CJSON file with JobExecuter job to document
- JsonTargetFileName
Export documentation as <see cref="!:StructuredText" /> object to JSON.
If empty, the file will be placed in app subfolder docu with the name "job_docu.json"- MailTo
Mail receiver(s) separated by semicolon. Intended to use for mail compliance report to compliance process owner
- Name
Name of the job
- PdfTargetFileName
Export documentation to Pdf
- Timeout
Timeout in seconds the job will be terminated after start
- Title
Title for documentation
{
"$type": "JobExecuter.Dal.Model.Job, JobExecuter.Dal",
"Name": "Sample job for JobDocuJobTask",
"Description": "This job contains one or more sample JobTasks for class JobExecuter.Dal.Model.JobDocuJobTask",
"ErrorMailReceiver": "errorreceiver1@test.xxx;errorreceiver2@test.xxx",
"SummaryMailReceiver": "summaryreceiver1@test.xxx;summaryreceiver2@test.xxx",
"JobTasks": [
{
"$type": "JobExecuter.Dal.Model.JobDocuJobTask, JobExecuter.Dal",
"JobJsonFileName": "",
"Title": null,
"MailTo": null,
"HtmlTargetFileName": null,
"PdfTargetFileName": null,
"JsonTargetFileName": "",
"Name": "Document the current JobExecuter job",
"Description": "If JobJsonFileName and DocuJsonFileName left empty, JobExecuter will insert current job file path and as docu file name the current job file path with the suffix _docu.json",
"ErrorMailReceiver": null,
"Timeout": 30
},
{
"$type": "JobExecuter.Dal.Model.JobDocuJobTask, JobExecuter.Dal",
"JobJsonFileName": "d:\\tmp\\FolderBackup2\\job.json",
"Title": null,
"MailTo": null,
"HtmlTargetFileName": null,
"PdfTargetFileName": null,
"JsonTargetFileName": "d:\\tmp\\FolderBackup2\\job.json",
"Name": "Document the a JobExecuter job",
"Description": "Set JobJsonFileName and DocuJsonFileName to a spezific path if needed",
"ErrorMailReceiver": null,
"Timeout": 30
}
],
"Timeout": 500,
"WriteToEventLog": true
}
PingCheckJobTask
Check successful ping to certain network addresses
Properties
- Description
Description of the job used for documentation
- ErrorMailReceiver
Mail addresses separarted with semicolon to send an error mail to
- IpAdresses
IP-addresses separated by semicolon
- Name
Name of the job
- PingTimeout
Timeout in milliseconds for Ping. Default: 15.000
- Timeout
Timeout in seconds the job will be terminated after start
{
"$type": "JobExecuter.Dal.Model.Job, JobExecuter.Dal",
"Name": "Sample job for PingCheckJobTask",
"Description": "This job contains one or more sample JobTasks for class JobExecuter.Dal.Model.PingCheckJobTask",
"ErrorMailReceiver": "errorreceiver1@test.xxx;errorreceiver2@test.xxx",
"SummaryMailReceiver": "summaryreceiver1@test.xxx;summaryreceiver2@test.xxx",
"JobTasks": [
{
"$type": "JobExecuter.Dal.Model.PingCheckJobTask, JobExecuter.Dal",
"IpAdresses": "192.168.12.15;192.168.12.20;192.168.12.1;8.8.8.8",
"PingTimeout": 15000,
"Name": "Sample task for ping check",
"Description": null,
"ErrorMailReceiver": null,
"Timeout": 60
}
],
"Timeout": 500,
"WriteToEventLog": true
}
PsBatchJobTask
Run a PowerShell script file
Properties
- Description
Description of the job used for documentation
- ErrorMailReceiver
Mail addresses separarted with semicolon to send an error mail to
- Filename
Full path to a powershell script file to run. Path may contain blanks
- Name
Name of the job
- PowerShellVersion
The version of PowerShell to run the Model.PsBatchJobTask on
- Timeout
Timeout in seconds the job will be terminated after start
{
"$type": "JobExecuter.Dal.Model.Job, JobExecuter.Dal",
"Name": "Sample job for PsBatchJobTask",
"Description": "This job contains one or more sample JobTasks for class JobExecuter.Dal.Model.PsBatchJobTask",
"ErrorMailReceiver": "errorreceiver1@test.xxx;errorreceiver2@test.xxx",
"SummaryMailReceiver": "summaryreceiver1@test.xxx;summaryreceiver2@test.xxx",
"JobTasks": [
{
"$type": "JobExecuter.Dal.Model.PsBatchJobTask, JobExecuter.Dal",
"Filename": "PowerShellScript.ps1.bak",
"PowerShellVersion": "V01",
"Name": "Running a PowerShell batch file with PowerShell V01",
"Description": null,
"ErrorMailReceiver": null,
"Timeout": 30
},
{
"$type": "JobExecuter.Dal.Model.PsBatchJobTask, JobExecuter.Dal",
"Filename": "PowerShellScript.ps1.bak",
"PowerShellVersion": "V03",
"Name": "Running a PowerShell batch file with PowerShell V03",
"Description": null,
"ErrorMailReceiver": null,
"Timeout": 30
}
],
"Timeout": 500,
"WriteToEventLog": true
}
RunAppJobTask
Run an app with or without parameters
Properties
- Arguments
Arguments to start the app with
- Description
Description of the job used for documentation
- ErrorMailReceiver
Mail addresses separarted with semicolon to send an error mail to
- Filename
Full path to app to run. Path may contain blanks
- InteractiveMode
Run app in interactive mode. default: false
- Name
Name of the job
- Timeout
Timeout in seconds the job will be terminated after start
{
"$type": "JobExecuter.Dal.Model.Job, JobExecuter.Dal",
"Name": "Sample job for RunAppJobTask",
"Description": "This job contains one or more sample JobTasks for class JobExecuter.Dal.Model.RunAppJobTask",
"ErrorMailReceiver": "errorreceiver1@test.xxx;errorreceiver2@test.xxx",
"SummaryMailReceiver": "summaryreceiver1@test.xxx;summaryreceiver2@test.xxx",
"JobTasks": [
{
"$type": "JobExecuter.Dal.Model.RunAppJobTask, JobExecuter.Dal",
"Filename": "robocopy.exe",
"Arguments": null,
"InteractiveMode": false,
"Name": "Sample for running a app without parmeters",
"Description": null,
"ErrorMailReceiver": null,
"Timeout": 30
},
{
"$type": "JobExecuter.Dal.Model.RunAppJobTask, JobExecuter.Dal",
"Filename": "robocopy.exe",
"Arguments": "/?",
"InteractiveMode": false,
"Name": "Sample for running a app with parameters",
"Description": null,
"ErrorMailReceiver": null,
"Timeout": 30
}
],
"Timeout": 500,
"WriteToEventLog": true
}
SqlBackupAllDatabasesJobTask
Task to take a full backup for all SQL databases (with exception of TempDb) on a Microsoft® SqlServer starting with version 2008.
Uses the following SQl statement: BACKUP DATABASE [{0}] TO DISK = N'JobExecuter technical documentation' WITH INIT, SKIP, FORMAT, NOUNLOAD, NAME = N'{0} full backup'
Properties
- Description
Description of the job used for documentation
- ErrorMailReceiver
Mail addresses separarted with semicolon to send an error mail to
- FileName
File name schema for the backup file. ;ust contain placeholders.
Otherwise all backups are made to the same file (and overwrite it with each backup)
Must contain placeholders:
??server?? = Server name or Server and instance name
??database?? = database name
Optional placeholders are:
??date?? = date in format yyyymmdd
??time?? = date and time in format yyyymmddhhnn- LocalTarget
Local target folder to backup database in
- Name
Name of the job
- NetworkTarget
Target folder for the backup on a network share (if requested).
- RemoveLocalBackup
Remove local backup files after copying to network. Default: false
- Server
server name or server and instance name of a database server
- Timeout
Timeout in seconds the job will be terminated after start
{
"$type": "JobExecuter.Dal.Model.Job, JobExecuter.Dal",
"Name": "Sample job for SqlBackupAllDatabasesJobTask",
"Description": "This job contains one or more sample JobTasks for class JobExecuter.Dal.Model.SqlBackupAllDatabasesJobTask",
"ErrorMailReceiver": "errorreceiver1@test.xxx;errorreceiver2@test.xxx",
"SummaryMailReceiver": "summaryreceiver1@test.xxx;summaryreceiver2@test.xxx",
"JobTasks": [
{
"$type": "JobExecuter.Dal.Model.SqlBackupAllDatabasesJobTask, JobExecuter.Dal",
"LocalTarget": "d:\\tmp",
"NetworkTarget": null,
"FileName": "??server??_??database??.bak",
"RemoveLocalBackup": false,
"Server": ".\\sqlexpress",
"Name": "Local backup of all databases on a SqlServer instance",
"Description": null,
"ErrorMailReceiver": null,
"Timeout": 60
},
{
"$type": "JobExecuter.Dal.Model.SqlBackupAllDatabasesJobTask, JobExecuter.Dal",
"LocalTarget": "d:\\tmp",
"NetworkTarget": "d:\\tmp\\network",
"FileName": "testbackup.bak",
"RemoveLocalBackup": false,
"Server": ".\\sqlexpress",
"Name": "Network share backup of all databases on a SqlServer instance",
"Description": null,
"ErrorMailReceiver": null,
"Timeout": 60
}
],
"Timeout": 500,
"WriteToEventLog": true
}
SqlBackupLogSingleDatabaseJobTask
Task to take a log file backup for a single SQL database on Microsoft® SqlServer starting with version 2008.
Uses the following SQl statement: BACKUP LOG [{0}] TO DISK = N'JobExecuter technical documentation' WITH INIT, SKIP, FORMAT, NOUNLOAD, NAME = N'{0} full backup'
Properties
- DatabaseName
Name of the database to backup
- Description
Description of the job used for documentation
- ErrorMailReceiver
Mail addresses separarted with semicolon to send an error mail to
- FileName
File name for the backup file
May contain placeholders:
??server?? = Server name or Server and instance name
??database?? = database name
??date?? = date in format yyyymmdd
??time?? = date and time in format yyyymmddhhnn- LocalTarget
Local target folder to backup database in
- Name
Name of the job
- NetworkTarget
Target folder for the backup on a network share (if requested).
- RemoveLocalBackup
Remove local backup files after copying to network. Default: false
- Server
server name or server and instance name of a database server
- Timeout
Timeout in seconds the job will be terminated after start
{
"$type": "JobExecuter.Dal.Model.Job, JobExecuter.Dal",
"Name": "Sample job for SqlBackupLogSingleDatabaseJobTask",
"Description": "This job contains one or more sample JobTasks for class JobExecuter.Dal.Model.SqlBackupLogSingleDatabaseJobTask",
"ErrorMailReceiver": "errorreceiver1@test.xxx;errorreceiver2@test.xxx",
"SummaryMailReceiver": "summaryreceiver1@test.xxx;summaryreceiver2@test.xxx",
"JobTasks": [
{
"$type": "JobExecuter.Dal.Model.SqlBackupLogSingleDatabaseJobTask, JobExecuter.Dal",
"DatabaseName": "MediaDb",
"LocalTarget": "d:\\tmp",
"NetworkTarget": "d:\\tmp\\network",
"FileName": "testbackup.bak",
"RemoveLocalBackup": true,
"Server": ".\\sqlexpress",
"Name": "Backup database to a network path",
"Description": null,
"ErrorMailReceiver": null,
"Timeout": 60
}
],
"Timeout": 500,
"WriteToEventLog": true
}
SqlBackupSingleDatabaseJobTask
Task to take a full backup for a single SQL database on Microsoft® SqlServer starting with version 2008.
Uses the following SQl statement: BACKUP DATABASE [{0}] TO DISK = N'JobExecuter technical documentation' WITH INIT, SKIP, FORMAT, NOUNLOAD, NAME = N'{0} full backup'
Properties
- DatabaseName
Name of the database to backup
- Description
Description of the job used for documentation
- ErrorMailReceiver
Mail addresses separarted with semicolon to send an error mail to
- FileName
File name for the backup file
May contain placeholders:
??server?? = Server name or Server and instance name
??database?? = database name
??date?? = date in format yyyymmdd
??time?? = date and time in format yyyymmddhhnn- LocalTarget
Local target folder to backup database in
- Name
Name of the job
- NetworkTarget
Target folder for the backup on a network share (if requested).
- RemoveLocalBackup
Remove local backup files after copying to network. Default: false
- Server
server name or server and instance name of a database server
- Timeout
Timeout in seconds the job will be terminated after start
{
"$type": "JobExecuter.Dal.Model.Job, JobExecuter.Dal",
"Name": "Sample job for SqlBackupSingleDatabaseJobTask",
"Description": "This job contains one or more sample JobTasks for class JobExecuter.Dal.Model.SqlBackupSingleDatabaseJobTask",
"ErrorMailReceiver": "errorreceiver1@test.xxx;errorreceiver2@test.xxx",
"SummaryMailReceiver": "summaryreceiver1@test.xxx;summaryreceiver2@test.xxx",
"JobTasks": [
{
"$type": "JobExecuter.Dal.Model.SqlBackupSingleDatabaseJobTask, JobExecuter.Dal",
"DatabaseName": "MediaDb",
"LocalTarget": "d:\\tmp",
"NetworkTarget": null,
"FileName": "testbackup.bak",
"RemoveLocalBackup": false,
"Server": ".\\sqlexpress",
"Name": "Backup database to local file only",
"Description": null,
"ErrorMailReceiver": null,
"Timeout": 60
},
{
"$type": "JobExecuter.Dal.Model.SqlBackupSingleDatabaseJobTask, JobExecuter.Dal",
"DatabaseName": "MediaDb",
"LocalTarget": "d:\\tmp",
"NetworkTarget": "d:\\tmp\\network",
"FileName": "testbackup.bak",
"RemoveLocalBackup": true,
"Server": ".\\sqlexpress",
"Name": "Backup database to a network path",
"Description": null,
"ErrorMailReceiver": null,
"Timeout": 60
}
],
"Timeout": 500,
"WriteToEventLog": true
}
SqlBatchJobTask
Task to run a SQL batch from a file or from a string against a Microsoft® SqlServer
SQL statements must be separated by GO. The SQL statements must address database correctly, i.e EXEC testdb.dbo.TestProc.
All SQL statements are running on the same connection. This makes it possible to use temporary tables in SQL statements.
Properties
- BatchContent
Direct batch SQL to run
- DatabaseName
Name of the database to run the batch file in
- Description
Description of the job used for documentation
- ErrorMailReceiver
Mail addresses separarted with semicolon to send an error mail to
- FileName
Path to the SQL batch file to run
- Name
Name of the job
- Server
server name or server and instance name of a database server
- Timeout
Timeout in seconds the job will be terminated after start
{
"$type": "JobExecuter.Dal.Model.Job, JobExecuter.Dal",
"Name": "Sample job for SqlBatchJobTask",
"Description": "This job contains one or more sample JobTasks for class JobExecuter.Dal.Model.SqlBatchJobTask",
"ErrorMailReceiver": "errorreceiver1@test.xxx;errorreceiver2@test.xxx",
"SummaryMailReceiver": "summaryreceiver1@test.xxx;summaryreceiver2@test.xxx",
"JobTasks": [
{
"$type": "JobExecuter.Dal.Model.SqlBatchJobTask, JobExecuter.Dal",
"DatabaseName": "MediaDb",
"FileName": "testbackup.bak",
"BatchContent": null,
"Server": ".\\sqlexpress",
"Name": "Run a SQL batch file",
"Description": null,
"ErrorMailReceiver": null,
"Timeout": 60
},
{
"$type": "JobExecuter.Dal.Model.SqlBatchJobTask, JobExecuter.Dal",
"DatabaseName": "MediaDb",
"FileName": null,
"BatchContent": "exec spTest 1\r\nGO\r\nexec spTest 2\r\nGO\r\nexec spTest 3",
"Server": ".\\sqlexpress",
"Name": "Run SQL batch directly from string",
"Description": null,
"ErrorMailReceiver": null,
"Timeout": 60
}
],
"Timeout": 500,
"WriteToEventLog": true
}
SqlComplianceAllDatabasesJobTask
Task to collect compliance relevante information for all SQL databases on a Microsoft® SqlServer
Databases Master, Msdb, Model and TempDb are excluded by this task. Requires the job running user to be member of the sysadmin or securityadmin server roles.
Properties
- Description
Description of the job used for documentation
- ErrorMailReceiver
Mail addresses separarted with semicolon to send an error mail to
- HtmlTargetFileName
Export documentation to HTML
- JsonTargetFileName
Export documentation as <see cref="!:StructuredText" /> object to JSON.
If empty, the file will be placed in app subfolder docu with the name "job_docu.json"- MailTo
Mail receiver(s) separated by semicolon. Intended to use for mail compliance report to compliance process owner
- Name
Name of the job
- PdfTargetFileName
Export documentation to Pdf
- Server
server name or server and instance name of a database server
- Timeout
Timeout in seconds the job will be terminated after start
- Title
Title for documentation
{
"$type": "JobExecuter.Dal.Model.Job, JobExecuter.Dal",
"Name": "Sample job for SqlComplianceAllDatabasesJobTask",
"Description": "This job contains one or more sample JobTasks for class JobExecuter.Dal.Model.SqlComplianceAllDatabasesJobTask",
"ErrorMailReceiver": "errorreceiver1@test.xxx;errorreceiver2@test.xxx",
"SummaryMailReceiver": "summaryreceiver1@test.xxx;summaryreceiver2@test.xxx",
"JobTasks": [
{
"$type": "JobExecuter.Dal.Model.SqlComplianceAllDatabasesJobTask, JobExecuter.Dal",
"Server": ".\\sqlexpress",
"Title": null,
"MailTo": "info@bodoconsult.de",
"HtmlTargetFileName": "d:\\tmp\\JobExecuter\\ServerXY_DatabaseComplianceReport.htm",
"PdfTargetFileName": null,
"JsonTargetFileName": null,
"Name": "Create compliance information for all databases on a SqlServer with exception of databases Master, Msdb, Model and TempDb",
"Description": null,
"ErrorMailReceiver": null,
"Timeout": 60
}
],
"Timeout": 500,
"WriteToEventLog": true
}
SqlComplianceSingleDatabaseJobTask
Task to collect compliance relevante information for a single SQL database on a Microsoft® SqlServer
Properties
- DatabaseName
Name of the database to backup
- Description
Description of the job used for documentation
- ErrorMailReceiver
Mail addresses separarted with semicolon to send an error mail to
- HtmlTargetFileName
Export documentation to HTML
- JsonTargetFileName
Export documentation as <see cref="!:StructuredText" /> object to JSON.
If empty, the file will be placed in app subfolder docu with the name "job_docu.json"- MailTo
Mail receiver(s) separated by semicolon. Intended to use for mail compliance report to compliance process owner
- Name
Name of the job
- PdfTargetFileName
Export documentation to Pdf
- Server
server name or server and instance name of a database server
- Timeout
Timeout in seconds the job will be terminated after start
- Title
Title for documentation
{
"$type": "JobExecuter.Dal.Model.Job, JobExecuter.Dal",
"Name": "Sample job for SqlComplianceSingleDatabaseJobTask",
"Description": "This job contains one or more sample JobTasks for class JobExecuter.Dal.Model.SqlComplianceSingleDatabaseJobTask",
"ErrorMailReceiver": "errorreceiver1@test.xxx;errorreceiver2@test.xxx",
"SummaryMailReceiver": "summaryreceiver1@test.xxx;summaryreceiver2@test.xxx",
"JobTasks": [
{
"$type": "JobExecuter.Dal.Model.SqlComplianceSingleDatabaseJobTask, JobExecuter.Dal",
"Server": ".\\sqlexpress",
"DatabaseName": "DatabaseXY",
"Title": null,
"MailTo": "info@bodoconsult.de",
"HtmlTargetFileName": "d:\\tmp\\JobExecuter\\ServerXY_DatabaseXY_ComplianceReport.htm",
"PdfTargetFileName": null,
"JsonTargetFileName": null,
"Name": "Create compliance information for a single database",
"Description": null,
"ErrorMailReceiver": null,
"Timeout": 60
}
],
"Timeout": 500,
"WriteToEventLog": true
}
SqlDocuAllDatabasesJobTask
Task to take a documentation for all SQL databases on a Microsoft® SqlServer with exception of databases Master, Msdb, Model and TempDb.
A database may contain stored procs under the schema dbo and names beginning with spDbDocu_ for adding database specific content to the docmentation.
For parts of the documentation the user running the job needs certain permissions. To give least possible permissions, this user should be part of a user defined server role on the SqlServer with the permissions VIEW ANY DEFINITION and GRANT VIEW SERVER STATE. You should avoid making the user a sysadmin for security reasons. User must have access to each database with least possible permissions!
CREATE SERVER ROLE NameOfNewServerRole
GO
GRANT VIEW ANY DEFINITION TO NameOfNewServerRole
GO
GRANT VIEW SERVER STATE TO NameOfNewServerRole
GO
EXEC sp_addsrvrolemember 'domain\SG-SqlKeyUsers', 'NameOfNewServerRole'
Properties
- Description
Description of the job used for documentation
- ErrorMailReceiver
Mail addresses separarted with semicolon to send an error mail to
- HtmlTargetFileName
Export documentation to HTML
- JsonTargetFileName
Export documentation as <see cref="!:StructuredText" /> object to JSON.
If empty, the file will be placed in app subfolder docu with the name "job_docu.json"- MailTo
Mail receiver(s) separated by semicolon. Intended to use for mail compliance report to compliance process owner
- Name
Name of the job
- PdfTargetFileName
Export documentation to Pdf
- Server
server name or server and instance name of a database server
- Timeout
Timeout in seconds the job will be terminated after start
- Title
Title for documentation
{
"$type": "JobExecuter.Dal.Model.Job, JobExecuter.Dal",
"Name": "Sample job for SqlDocuAllDatabasesJobTask",
"Description": "This job contains one or more sample JobTasks for class JobExecuter.Dal.Model.SqlDocuAllDatabasesJobTask",
"ErrorMailReceiver": "errorreceiver1@test.xxx;errorreceiver2@test.xxx",
"SummaryMailReceiver": "summaryreceiver1@test.xxx;summaryreceiver2@test.xxx",
"JobTasks": [
{
"$type": "JobExecuter.Dal.Model.SqlDocuAllDatabasesJobTask, JobExecuter.Dal",
"Server": ".\\sqlexpress",
"Title": null,
"MailTo": null,
"HtmlTargetFileName": "d:\\tmp\\testbackup.bak.htm",
"PdfTargetFileName": null,
"JsonTargetFileName": "d:\\tmp\\testbackup.bak.json",
"Name": "Create a documentation for all databases on a SqlServer with exception of databases Master, Msdb, Model and TempDb",
"Description": null,
"ErrorMailReceiver": null,
"Timeout": 60
}
],
"Timeout": 500,
"WriteToEventLog": true
}
SqlDocuSingleDatabaseJobTask
Task to take a documentation for a single SQL database on a Microsoft® SqlServer.
A database may contain stored procs under the schema dbo and names beginning with spDbDocu_ foradding database specific content to the docmentation.
For parts of the documentation the user running the job needs certain permissions.
To give least possible permissions, this user should be part of a user defined server role on the SqlServer with the permissions VIEW ANY DEFINITION and GRANT VIEW SERVER STATE.
You should avoid making the user a sysadmin for security reasons. User must have access to each database with least possible permissions!
CREATE SERVER ROLE NameOfNewServerRole
GO
GRANT VIEW ANY DEFINITION TO NameOfNewServerRole
GO
GRANT VIEW SERVER STATE TO NameOfNewServerRole
GO
EXEC sp_addsrvrolemember 'domain\SG-SqlKeyUsers', 'NameOfNewServerRole'
Properties
- DatabaseName
Name of the database to backup
- Description
Description of the job used for documentation
- ErrorMailReceiver
Mail addresses separarted with semicolon to send an error mail to
- HtmlTargetFileName
Export documentation to HTML
- JsonTargetFileName
Export documentation as <see cref="!:StructuredText" /> object to JSON.
If empty, the file will be placed in app subfolder docu with the name "job_docu.json"- MailTo
Mail receiver(s) separated by semicolon. Intended to use for mail compliance report to compliance process owner
- Name
Name of the job
- PdfTargetFileName
Export documentation to Pdf
- Server
server name or server and instance name of a database server
- Timeout
Timeout in seconds the job will be terminated after start
- Title
Title for documentation
{
"$type": "JobExecuter.Dal.Model.Job, JobExecuter.Dal",
"Name": "Sample job for SqlDocuSingleDatabaseJobTask",
"Description": "This job contains one or more sample JobTasks for class JobExecuter.Dal.Model.SqlDocuSingleDatabaseJobTask",
"ErrorMailReceiver": "errorreceiver1@test.xxx;errorreceiver2@test.xxx",
"SummaryMailReceiver": "summaryreceiver1@test.xxx;summaryreceiver2@test.xxx",
"JobTasks": [
{
"$type": "JobExecuter.Dal.Model.SqlDocuSingleDatabaseJobTask, JobExecuter.Dal",
"Server": ".\\sqlexpress",
"DatabaseName": "MediaDb",
"Title": null,
"MailTo": null,
"HtmlTargetFileName": "d:\\tmp\\database_docu.htm",
"PdfTargetFileName": null,
"JsonTargetFileName": "d:\\tmp\\database_docu.json",
"Name": "Create a documentation for a single database",
"Description": null,
"ErrorMailReceiver": null,
"Timeout": 60
}
],
"Timeout": 500,
"WriteToEventLog": true
}
SqlMaintenanceJobTask
Job to perfrom maintenance on a Microsoft® SqlServer instance
Needs sysadmin permissions to run successfully on the instance of SqlServer
Properties
- Description
Description of the job used for documentation
- ErrorMailReceiver
Mail addresses separarted with semicolon to send an error mail to
- FragmentationLevel1
Fragmentation level 1 (low ->medium) in percent. 50 means 50 percent. Default: 5
- FragmentationLevel2
Fragmentation level 2 (medium -> high) in percent. 50 means 50 percent. Default: 30
- HtmlTargetFileName
Export documentation to HTML
- JsonTargetFileName
Export documentation as <see cref="!:StructuredText" /> object to JSON.
If empty, the file will be placed in app subfolder docu with the name "job_docu.json"- MailTo
Mail receiver(s) separated by semicolon. Intended to use for mail compliance report to compliance process owner
- Name
Name of the job
- PdfTargetFileName
Export documentation to PDF
- Server
server name or server and instance name of a database server
- Timeout
Timeout in seconds the job will be terminated after start
- Title
Title for documentation
{
"$type": "JobExecuter.Dal.Model.Job, JobExecuter.Dal",
"Name": "Sample job for SqlMaintenanceJobTask",
"Description": "This job contains one or more sample JobTasks for class JobExecuter.Dal.Model.SqlMaintenanceJobTask",
"ErrorMailReceiver": "errorreceiver1@test.xxx;errorreceiver2@test.xxx",
"SummaryMailReceiver": "summaryreceiver1@test.xxx;summaryreceiver2@test.xxx",
"JobTasks": [
{
"$type": "JobExecuter.Dal.Model.SqlMaintenanceJobTask, JobExecuter.Dal",
"MailTo": "test@test123.de",
"Title": null,
"HtmlTargetFileName": "d:\\tmp\\JobExecuter\\Maintenance.htm",
"PdfTargetFileName": null,
"JsonTargetFileName": null,
"FragmentationLevel1": 5,
"FragmentationLevel2": 30,
"Server": "192.168.10.125",
"Name": "Runs a maintenance job on a SqlServer instance",
"Description": null,
"ErrorMailReceiver": null,
"Timeout": 600
}
],
"Timeout": 500,
"WriteToEventLog": true
}
TaskSchedulerDocuJobTask
Task to save TaskScheduler tasks as XML and document it
Properties
- Description
Description of the job used for documentation
- ErrorMailReceiver
Mail addresses separarted with semicolon to send an error mail to
- Filter
Filters task by the filter expression added here. Seperated values with semicolon. Task name has to start with filter expression
- HtmlTargetFileName
Export documentation to HTML
- JsonTargetFileName
Export documentation as <see cref="!:StructuredText" /> object to JSON.
If empty, the file will be placed in app subfolder docu with the name "job_docu.json"- MailTo
Mail receiver(s) separated by semicolon. Intended to use for mail compliance report to compliance process owner
- Name
Name of the job
- PdfTargetFileName
Export documentation to Pdf
- TargetServer
Target server to access for windows task scheduler. Default: null = localhost
- Timeout
Timeout in seconds the job will be terminated after start
- Title
Title for documentation
- XmlTargetPath
Folder to export the tasks in
{
"$type": "JobExecuter.Dal.Model.Job, JobExecuter.Dal",
"Name": "Sample job for TaskSchedulerDocuJobTask",
"Description": "This job contains one or more sample JobTasks for class JobExecuter.Dal.Model.TaskSchedulerDocuJobTask",
"ErrorMailReceiver": "errorreceiver1@test.xxx;errorreceiver2@test.xxx",
"SummaryMailReceiver": "summaryreceiver1@test.xxx;summaryreceiver2@test.xxx",
"JobTasks": [
{
"$type": "JobExecuter.Dal.Model.TaskSchedulerDocuJobTask, JobExecuter.Dal",
"XmlTargetPath": "d:\\tmp\\FolderBackup2",
"Filter": null,
"TargetServer": null,
"Title": null,
"MailTo": null,
"HtmlTargetFileName": "d:\\tmp\\FolderBackup2\\docu.html",
"PdfTargetFileName": null,
"JsonTargetFileName": "d:\\tmp\\FolderBackup2\\docu.json",
"Name": "Getting all task scheduler tasks from local computer",
"Description": null,
"ErrorMailReceiver": null,
"Timeout": 30
},
{
"$type": "JobExecuter.Dal.Model.TaskSchedulerDocuJobTask, JobExecuter.Dal",
"XmlTargetPath": "d:\\tmp\\FolderBackup2",
"Filter": "Adobe;Microsoft",
"TargetServer": null,
"Title": null,
"MailTo": null,
"HtmlTargetFileName": "d:\\tmp\\FolderBackup2\\docu.html",
"PdfTargetFileName": null,
"JsonTargetFileName": "d:\\tmp\\FolderBackup2\\docu.json",
"Name": "Getting task scheduler data from local computer with use of filter expressions",
"Description": "Filters only tasks starting with Adobe or Microsoft",
"ErrorMailReceiver": null,
"Timeout": 30
}
],
"Timeout": 500,
"WriteToEventLog": true
}
Advanced features
Using Readme.txt
If in the directory of a JobExecuter job - there where the JSON file of job is located - is Readme.txt placed, this file will be included in the job's documentation.
Tags usable in the Readme.txt
In such a Readme.txt you can use the following tags to format the readme.txt if it is processed to the job documentation. The following tags are interpreted:
- H1
Header level 1
- H2
Header level 2
- H3
Header level 3
- DL
Definition list (must be followed by a DD tag)
- LI
List items
All tags will be finished at the next carriage return+line feed (char(13)+char(10)).
Comments in Readme.txt
Comments made of asterikses (*) will be removed when formatting Readme.txt to plain text or HTML
Sample
The HTML result of processing such a Readme.txt you can find in the file Readme.htm
Legal notes
Date this documentation was created: 19.01.2021 15:47
Registered and unregistered trademarks
All other registered and unregistered trademarks are the property of their respective owners.
Licence information
Licence for Newtonsoft.Json
Used in JobExecuter to provide JSON support
URL: https://www.newtonsoft.com/json
MIT License
MIT Copyright (c) 2003-2010 David Hall
Permission is hereby granted, free of charge, to any person obtaining a copy of this
software and associated documentation files (the "Software"), to deal in the Software
without restriction, including without limitation the rights to use, copy, modify, merge,
publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or
substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Licence for dahall/TaskScheduler
Used in JobExecuter to provide TaskScheduler documentation
URL: https://github.com/dahall/TaskScheduler
MIT License
MIT Copyright (c) 2003-2010 David Hall
Permission is hereby granted, free of charge, to any person obtaining a copy of this
software and associated documentation files (the "Software"), to deal in the Software
without restriction, including without limitation the rights to use, copy, modify, merge,
publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies
or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Licence for garysharp/DhcpServerApi
Used in JobExecuter to provide DHCP documentation
URL: https://github.com/garysharp/DhcpServerApi/
MIT License
Copyright (c) 2015 Gary Sharp
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
Licence for olahallengren/sql-server-maintenance-solution
Used in JobExecuter to provide Microsoft (R) SqlServer maintenance
URL: https://github.com/olahallengren/sql-server-maintenance-solution
MIT License
Copyright (c) 2019 Ola Hallengren
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Licence for Google prettify
Used in JobExecuter to create HTML pages
URL: https://github.com/google/code-prettify
@license
Copyright (C) 2015 Google Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.