2017-09-25 84 views
0

ユーザーがログオンしているときにのみオプションを実行できるようにするスクリプトの作成方法を知っていますか?私は何時間も捜し求めましたが、良い解決策は見つかりませんでした。問題は、このプログラムはバックグラウンドで実行できないため、ユーザーがログオンしているときに限り、自分の知識から実行する必要があるということです。任意のアドバイスが評価されます「ユーザーがログオンしているときのみ実行する」オプションを持つpowershellでスケジュールされたタスクを作成できない

$taskName = 'task name' 
$taskDescription = 'task desc' 
$executable = "program.exe" 
$workingDir = "C:\utv" 
$user = "user" 
$password = "password" 

Write-Host "Configuring scheduled task" 
Write-Host " - Executable: $workingDir\$executable" 
Write-Host " - User: $user" 
Write-Host "pw: $password" 

$action = New-ScheduledTaskAction -Execute "$workingDir\$executable" 
$trigger = New-ScheduledTaskTrigger -Daily -At 00:01 
$existingTask = Get-ScheduledTask | Where-Object {$_.TaskName -like  $taskName} 
$principal = New-ScheduledTaskPrincipal -UserId $user 
if ($existingTask) { 
    Write-Host "Existing task found, updating..." 
    Set-ScheduledTask ` 
     -TaskName $taskName ` 
     -Action $action ` 
     -Trigger $trigger -User $user -Password $password 
} 
else { 
    Write-Host "Creating new task..." 
    Register-ScheduledTask ` 
     -TaskName $taskName ` 
     -Description $taskDescription ` 
     -Action $action ` 
     -Trigger $trigger -User $user -Password $password 
} 
Write-Host "Setting Repetition properties" 
$newTask = Get-ScheduledTask | Where-Object {$_.TaskName -like $taskName} 

$newTask.Triggers.repetition.Duration = 'PT23H' 
$newTask.Triggers.repetition.Interval = 'PT60M' 
$newTask.Principal.LogonType = 
$newTask | Set-ScheduledTask -User $user -Password $password 

Write-Host "Done!" 

答えて

1

デフォルト設定であるため、「ユーザーがログオンすると実行する」を設定する必要はありません。

+0

Windows10では、Register-ScheduledTaskを使用して作成したタスクは、「ユーザーがログオンしているかどうかにかかわらず実行する」と作成されます。 – andersr

+0

@andersr Windows 10でタスクジョブを作成するときに問題はありません – ArcSet

+0

@ArcSet試しましたしかし、これは、ユーザー名とパスワードをspesifyして、それが設定されているときに、wheatherユーザーがログインしているかどうかを判断するように見えます。 –

関連する問題