PowerShell: ScheduledJob się nie wykonuje. Brak błędów

20-wrz-2020

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

Komentarze są wyłączone

Autor: Rafał Kraik