diff --git a/windows/win_scheduled_task.ps1 b/windows/win_scheduled_task.ps1
index 4b64b7999e2..e71b9bd7b7e 100644
--- a/windows/win_scheduled_task.ps1
+++ b/windows/win_scheduled_task.ps1
@@ -38,14 +38,15 @@ if($state -eq "present") {
     $execute = Get-Attr -obj $params -name execute -failifempty $true -resultobj $result
     $frequency = Get-Attr -obj $params -name frequency -failifempty $true -resultobj $result
     $time = Get-Attr -obj $params -name time -failifempty $true -resultobj $result
+    $user = Get-Attr -obj $params -name user -failifempty $true -resultobj $result
 }
-if ($params.daysOfWeek)
+if ($params.days_of_week)
 {
-    $daysOfWeek = $params.daysOfWeek
+    $days_of_week = $params.days_of_week
 }
 elseif ($frequency -eq "weekly")
 {
-    Fail-Json $result "missing required argument: daysOfWeek"
+    Fail-Json $result "missing required argument: days_of_week"
 }
 
 # Vars with defaults
@@ -119,7 +120,7 @@ try {
             $trigger =  New-ScheduledTaskTrigger -Daily -At $time
         }
         elseif ($frequency -eq "weekly"){
-            $trigger =  New-ScheduledTaskTrigger -Weekly -At $time -DaysOfWeek $daysOfWeek
+            $trigger =  New-ScheduledTaskTrigger -Weekly -At $time -DaysOfWeek $days_of_week
         }
         else {
             Fail-Json $result "frequency must be daily or weekly"
@@ -137,13 +138,15 @@ try {
         Exit-Json $result
     }
 
+    $principal = New-ScheduledTaskPrincipal -UserId "$user" -LogonType ServiceAccount
+
     if ($enabled -eq $false){
         $settings = New-ScheduledTaskSettingsSet -Disable
     }
     else {
         $settings = New-ScheduledTaskSettingsSet
     }
-    
+
     if ($argument) {
         $action = New-ScheduledTaskAction -Execute $execute -Argument $argument
     }
@@ -153,19 +156,19 @@ try {
 
     if ( ($state -eq "present") -and ($exists -eq $false) ){
         $action = New-ScheduledTaskAction -Execute $execute
-        Register-ScheduledTask -Action $action -Trigger $trigger -TaskName $name -Description $description -TaskPath $path -Settings $settings
+        Register-ScheduledTask -Action $action -Trigger $trigger -TaskName $name -Description $description -TaskPath $path -Settings $settings -Principal $principal
         $task = Get-ScheduledTask -TaskName $name
         Set-Attr $result "msg" "Added new task $name"
         $result.changed = $true
     }
     elseif( ($state -eq "present") -and ($exists -eq $true) ) {
-        if ($task.Description -eq $description -and $task.TaskName -eq $name -and $task.TaskPath -eq $path -and $task.Actions.Execute -eq $execute -and $taskState -eq $enabled) {
-            #No change in the task yet
+        if ($task.Description -eq $description -and $task.TaskName -eq $name -and $task.TaskPath -eq $path -and $task.Actions.Execute -eq $execute -and $taskState -eq $enabled -and $task.Principal.UserId -eq $user) {
+            #No change in the task
             Set-Attr $result "msg" "No change in task $name"
         }
         else {
             Unregister-ScheduledTask -TaskName $name -Confirm:$false
-            Register-ScheduledTask -Action $action -Trigger $trigger -TaskName $name -Description $description -TaskPath $path -Settings $settings  -Principal $principal
+            Register-ScheduledTask -Action $action -Trigger $trigger -TaskName $name -Description $description -TaskPath $path -Settings $settings -Principal $principal
             Set-Attr $result "msg" "Updated task $name"
             $result.changed = $true
         }
@@ -176,4 +179,4 @@ try {
 catch
 {
   Fail-Json $result $_.Exception.Message
-}
+}
\ No newline at end of file