Dziwna sprawa. W PowerShellu utworzony ScheduledTask nie uruchamia się. PowerShell go widzi, ale nie wiadomo, co powoduje, że zaplanowane zadania nie startują. Oto kod tworzący taki przykładowy job:
$options = New-ScheduledJobOption -StartIfOnBattery -RunElevated $min = New-TimeSpan -Minutes 1 $trigger = New-JobTrigger -RepetitionInterval $min -RepeatIndefinitely -At (Get-Date) -Once Register-ScheduledJob -Name "My Task" -Trigger $trigger -ScheduledJobOption $options -ScriptBlock { $files_archive = 'c:\files_archive' $currdir = Get-Date -Format yyyyMMddhhmm cd $files_archive New-Item -ItemType directory -Path $currdir }
Dokładniejsza analiza logu harmonogramu zadań wskazała, że przyczyną jest brak uprawnień. Dziwne, bo polecenia uruchamiał lokalny administrator. Niestety konto tego administratora pochodziło z Azure AD. Ponieważ na komputerze jest jeszcze zdefiniowane inne konto administratora, to najprostszym rozwiązaniem było wskazanie, że zadanie ma się uruchamiać z wykorzystaniem tego innego konta. Na to inne konto można wskazać parametrem credential:
$options = New-ScheduledJobOption -StartIfOnBattery -RunElevated $min = New-TimeSpan -Minutes 1 $trigger = New-JobTrigger -RepetitionInterval $min -RepeatIndefinitely -At (Get-Date) -Once Register-ScheduledJob -Name "My Task" -Trigger $trigger -ScheduledJobOption $options -Credential ("$env:COMPUTERNAME\autoadmin") -ScriptBlock { $files_archive = 'c:\files_archive' $currdir = Get-Date -Format yyyyMMddhhmm cd $files_archive New-Item -ItemType directory -Path $currdir }
I teraz program działa jak ta lala. Jeśli zechcesz je usunąć wykonaj”
Get-ScheduledJob -Name 'My Task' | Unregister-ScheduledJob