简体   繁体   中英

PowerShell scheduled task

I am trying to create a Windows scheduled task using PowerShell to run an .exe at logon of any user, then re-run it every minute and have it run every minute indefinitely.

$computer = $env:ComputerName
$taskName = "MyTask"
$L = New-ScheduledTaskAction –Execute "PowerShell.exe" -Argument "$dropboxPath\request\Scripts\File_Permissions.ps1"
$T = New-ScheduledTaskTrigger -AtLogOn
$P = New-ScheduledTaskPrincipal -UserId "$env:ComputerName\$adminname" -LogonType Password -RunLevel Highest
$S = New-ScheduledTaskSettingsSet
Register-ScheduledTask -TaskName $taskName -Action $L -Trigger $T -User $adminname -Password $adminpassword -Settings $S
$T.RepetitionInterval = (New-TimeSpan -Minutes 1)
$T.RepetitionDuration = ([timespan]::MaxValue)
Set-ScheduledTask $taskName -Trigger $T

My script gives an error, it doesn't like the RepetitionInterval and RepetitionDuration.

Beed looking for ages on the internet and can't get this work. Here's another attempt which also fails:

$computer = $env:ComputerName
$L = New-ScheduledTaskAction –Execute "PowerShell.exe" -Argument "$dropboxPath\request\Scripts\File_Permissions.ps1"
$T = @()
$T += New-ScheduledTaskTrigger -AtLogOn -User *
$T += New-ScheduledTaskTrigger -AtLogOn -RepetitionInterval (New-TimeSpan -Minutes 1) -RepetitionDuration ([timespan]::MaxValue)
$P = New-ScheduledTaskPrincipal -UserId "$env:ComputerName\$adminname" -LogonType Password -RunLevel Highest
$S = New-ScheduledTaskSettingsSet
Register-ScheduledTask -TaskName "MyTask" -Action $L -Trigger $T -User $adminname -Password $adminpassword -Settings $S

I assume that you should use this:

Register-ScheduledTask -TaskName $taskName -Action $L -Trigger $T -User $adminname -Password $adminpassword -Settings $S
$task = get-scheduledtask -TaskName $taskName
$task.Triggers.repetition.Duration = 'PT60M'
$task.Triggers.repetition.Interval = 'PT01M'
$task | Set-ScheduledTask

taken from here .

Ok, I have taken the above from the other user (4c74356b41 (thanks)) and changed it around a little, I now have this working as the final:

$computer = $env:ComputerName
$taskName = "MyTask"
$L = New-ScheduledTaskAction –Execute "PowerShell.exe" -Argument "c:\request\Scripts\File_Permissions.ps1"
$T = New-ScheduledTaskTrigger -AtLogOn
$P = New-ScheduledTaskPrincipal -UserId "$env:ComputerName\$adminname" -LogonType Password -RunLevel Highest
$S = New-ScheduledTaskSettingsSet
Register-ScheduledTask -TaskName $taskName -Action $L -Trigger $T -User $adminname -Password $adminpassword -Settings $S
$task = get-scheduledtask -TaskName $taskName
$task.Triggers.repetition.Interval = 'PT01M'
$task.Triggers.repetition.Duration = 'P1D'
$task | Set-ScheduledTask -User $adminname -Password $adminpassword

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM