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!"
Windows10では、Register-ScheduledTaskを使用して作成したタスクは、「ユーザーがログオンしているかどうかにかかわらず実行する」と作成されます。 – andersr
@andersr Windows 10でタスクジョブを作成するときに問題はありません – ArcSet
@ArcSet試しましたしかし、これは、ユーザー名とパスワードをspesifyして、それが設定されているときに、wheatherユーザーがログインしているかどうかを判断するように見えます。 –