2016-11-20 19:28:44 +00:00
---
title: About the windows_task Resource
2018-02-16 00:28:15 +00:00
platform: windows
2016-11-20 19:28:44 +00:00
---
# windows_task
2018-02-15 04:31:56 +00:00
Use the `windows_task` InSpec audit resource to test a scheduled tasks configuration on a Windows platform.
2018-03-20 12:43:30 +00:00
Microsoft and application vendors use scheduled tasks to perform a variety of system maintenance tasks but system administrators can schedule their own.
2016-11-20 19:28:44 +00:00
2017-10-03 21:35:10 +00:00
<br>
2016-11-20 19:28:44 +00:00
## Syntax
A `windows_task` resource block declares the name of the task (as its full path) and tests its configuration:
2017-03-01 18:43:26 +00:00
describe windows_task('task name uri') do
2016-11-20 19:28:44 +00:00
its('parameter') { should eq 'value' }
it { should be_enabled }
end
where
2017-10-03 21:35:10 +00:00
* `'parameter'` must be a valid parameter defined within this resource ie `logon_mode`, `last_result`, `task_to_run`, `run_as_user`
2016-11-20 19:28:44 +00:00
* `'value'` will be used to compare the value gather from your chosen parameter
2017-10-03 21:35:10 +00:00
* `'be_enabled'` is an example of a valid matcher that checks the state of a task, other examples are `exist` or `be_disabled`
2016-11-20 19:28:44 +00:00
2017-10-03 21:35:10 +00:00
<br>
2016-11-20 19:28:44 +00:00
## Examples
The following examples show how to use this InSpec resource.
2018-02-16 02:34:11 +00:00
### Tests that a task is enabled
```ruby
describe windows_task('\Microsoft\Windows\Time Synchronization\SynchronizeTime') do
it { should be_enabled }
end
```
### Tests that a task is disabled
```ruby
describe windows_task('\Microsoft\Windows\AppID\PolicyConverter') do
it { should be_disabled }
end
```
### Tests the configuration parameters of a task
```ruby
describe windows_task('\Microsoft\Windows\AppID\PolicyConverter') do
its('logon_mode') { should eq 'Interactive/Background' }
its('last_result') { should eq '1' }
its('task_to_run') { should cmp '%Windir%\system32\appidpolicyconverter.exe' }
its('run_as_user') { should eq 'LOCAL SERVICE' }
end
```
### Tests that a task is defined
```ruby
describe windows_task('\Microsoft\Windows\Defrag\ScheduledDefrag') do
it { should exist }
end
```
2016-11-20 19:28:44 +00:00
## Gathering Tasknames
2018-02-16 02:34:11 +00:00
2016-11-20 19:28:44 +00:00
Rather then use the GUI you can use the `schtasks.exe` to output a full list of tasks available on the system
`schtasks /query /FO list`
rather than use the `list` output you can use `CSV` if it is easier.
Please make sure you use the full TaskName (include the prefix `\`) within your control
2018-02-16 02:34:11 +00:00
```ruby
C:\>schtasks /query /FO list
...
Folder: \Microsoft\Windows\Diagnosis
HostName: XPS15
TaskName: \Microsoft\Windows\Diagnosis\Scheduled
Next Run Time: N/A
Status: Ready
Logon Mode: Interactive/Background
...
```
2017-10-03 21:35:10 +00:00
<br>
## Matchers
2018-02-16 03:07:18 +00:00
For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).